1. 程式人生 > >騰訊面試算法題

騰訊面試算法題

代碼 namespace div std 算法 小寫 get 通過 stream

題目描述:
如何將一長串字符串裏的小寫字母轉換成大寫的。
註:要求不通過比較

思路:比較運算被限制住,那我們就試著通過邏輯運算來實現。

我們知道,a~z的ascii碼:97~122 也就是:1100001~1111010
A~Z的ascii碼:65~90 也就是:100 0001~1011010

可見大小寫字母的二進制表示差異所在是第6個位,那麽我們只要右移5位,使它編程第1位,再通過與運算判斷第1位是0還是1,

這樣也就知道是否是大小寫了。

代碼如下:

#include<iostream>
using namespace std;
int main()
{
    char p[]="abABcdefCDEFGghigklomnopkxyz
"; int len=strlen(p); for(int i=0;i<len;i++) { if(p[i]>>5&1) { //右移5個位,此時若是小寫字母,則最右邊一位為1,執行if內部語句 cout<<"Small Letter"<<endl; p[i]=p[i]-32; } } cout<<p<<endl; getchar(); return
0; }

騰訊面試算法題