华为 oj 简单密码破解&&汽水瓶&&删除字符串中出现次数最少的字符&&字符串排序
2016-08-18 21:17
441 查看
这四道题就不上图了,因为太简单,就四道题凑在一起了,应该放在简单题中。
第一题.这道题只需要注意字母‘Z’时候的转换,直接上代码
上代码
第三题用map直接统计次数,找到最小的一个或几个不输出就可以了。
上代码
第四题,稍微有点绕,首先我们要保证字母的顺序是a-z进行排列的,同时要保证相同位置的字母按原来的顺序排列,所以我定义了一个挺有意思的数据结构
vector<char> list[26];
所以相同位置的字母我们只需要按发现的顺序push_back就可以了,直接上代码能更清晰,但是同时要注意非字母的直接正常输出。
第一题.这道题只需要注意字母‘Z’时候的转换,直接上代码
#include<iostream> #include<string> using namespace std; int main() { string inStr = ""; cin >> inStr; int i = 0; for (; i<inStr.size(); i++) { if (inStr[i] >= 'A'&&inStr[i] <= 'Z') { if (inStr[i] == 'Z') { inStr[i] = 'a'; } else { inStr[i] = 'a' + (inStr[i] - 'A') + 1; } } else if (inStr[i] >= 'a'&&inStr[i] <= 'z') { if (inStr[i] == 'z') { inStr[i] = '9'; } else { inStr[i] = (inStr[i] - 'a') / 3 + '0' + 2; } } } cout << inStr << endl; return 0; }第二题,只要找到规律就好,只要注意剩余两个瓶子的时候可以向老板借一瓶喝完就有三个空瓶又可以还给老板一瓶,其他的逢3结果就加1就可以了。
上代码
#include<iostream> using namespace std; int main() { int n, res = 0; while (cin >> n) { if (n <= 0 || n >= 100) { return 0; } if (n == 1) { cout << 0 << endl; continue; } while (n != 0) { res += n / 3; n = n / 3 + n % 3; if (n == 2) { res++; break; } else if (n == 1) { break; } } cout << res << endl; res = 0; } return 0; }
第三题用map直接统计次数,找到最小的一个或几个不输出就可以了。
上代码
#include<iostream> #include<string> #include<map> using namespace std; int main() { map<char, int> res; string inStr = ""; cin >> inStr; int i = 0; int len = inStr.size(); //统计个数 for (i = 0; i<len; i++) { res[inStr[i]]++; } int min = 10000; for (map<char, int>::iterator iter = res.begin(); iter != res.end(); iter++) { if (iter->second<min) { min = iter->second; } } for (i = 0; i<len; i++) { if (res[inStr[i]] != min) { cout << inStr[i]; } } cout << endl; return 0; }
第四题,稍微有点绕,首先我们要保证字母的顺序是a-z进行排列的,同时要保证相同位置的字母按原来的顺序排列,所以我定义了一个挺有意思的数据结构
vector<char> list[26];
所以相同位置的字母我们只需要按发现的顺序push_back就可以了,直接上代码能更清晰,但是同时要注意非字母的直接正常输出。
#include<iostream> #include<string> #include<vector> using namespace std; int main() { string inStr = "", tmp = ""; int i = 0, j = 0, k = 0; vector<char> list[26]; getline(cin, inStr); //统计排序 for (i = 0; i<inStr.size(); i++) { if (inStr[i] >= 'A'&&inStr[i] <= 'Z') { list[inStr[i] - 'A'].push_back(inStr[i]); } else if (inStr[i] >= 'a'&&inStr[i] <= 'z') { list[inStr[i] - 'a'].push_back(inStr[i]); } } for (j = 0; j<26; j++) { for (k = 0; k<list[j].size(); k++) { tmp += list[j][k]; } } j = 0; for (i = 0; i<inStr.size(); i++) { if ((inStr[i] >= 'A'&&inStr[i] <= 'Z') || (inStr[i] >= 'a'&&inStr[i] <= 'z')) { inStr[i] = tmp[j]; j++; } } cout << inStr; return 0; }
相关文章推荐
- 华为OJ删除字符串中出现次数最少的字符
- 【华为OJ】【022-删除字符串中出现次数最少的字符】
- 华为oj 删除字符串中出现次数最少的字符
- 华为OJ 删除字符串中出现次数最少的字符
- 华为OJ(删除字符串中出现次数最少的字符)
- 【华为OJ】删除字符串中出现次数最少的字符
- 华为OJ中级题-删除字符串中出现次数最少的字符
- 【华为 OJ 】删除字符串中出现次数最少的字符
- 华为OJ——删除字符串中出现次数最少的字符
- 删除字符串中出现次数最少的字符,汽水瓶,简单密码
- 【华为OJ】删除一个字符串中出现次数最少的字符
- 华为OJ——删除字符串中出现次数最少的字符
- 华为oj 删除字符串中出现次数最少的字符
- 【华为OJ23】删除字符串中出现次数最少的字符
- [华为上机练习题]7.删除字符串中出现次数最少的字符
- OJ 系列之删除字符串中出现次数最少的字符
- 华为机试题:删除字符串中出现次数最少的字符
- 华为机试在线训练-牛客网(14)删除字符串中出现次数最少的字符
- 华为2013校园招聘上机笔试题-删除一个字符串中出现次数最少的字符
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)