【题目】
将字符串里的小写字母转换成大写的。 要求不通过比较
--------腾讯校招
【思路】
a~z的ascii码:97~122 也就是:1100001~1111010 A~Z的ascii码:65~90 也就是: 1000001~1011010 |
【代码】
/********************************* * 日期:2014-11-21 * 作者:SJF0115 * 题目: 将字符串里的小写字母转换成大写的。 要求不通过比较 * 来源:经典面试题 * 总结: **********************************/ #include <iostream> #include <string.h> using namespace std; /** 小写字母转换为大写字母(字符串中只包含大小写字母) */ string ToUpper(string str){ int len = str.length(); for(int i = 0;i < len;i++){ // 小写字母 if(str[i] >> 5 & 1){ str[i] -= 32; } } return str; } int main() { string str = "adfsSddSDdFDFwfdfs"; cout<<ToUpper(str)<<endl; }