騰訊面試算法題
阿新 • • 發佈:2017-06-08
代碼 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(); return0; }
騰訊面試算法題