【题目】
将字符串里的小写字母转换成大写的。 要求不通过比较
--------腾讯校招
【思路】
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;
}