题解
整理药名
1 条题解
-
0
解题思路
药名格式很乱,要求统一成"第一个字母大写,其余字母都小写"。
大小写字母转换利用 ASCII 码:大写字母 A~Z 的编码是 65~90,小写字母 a~z 的编码是 97~122,小写刚好比对应的大写大 32。
- 小写转大写:
ch = ch - 'a' + 'A'(等于 ch - 32)。 - 大写转小写:
ch = ch - 'A' + 'a'(等于 ch + 32)。
做法:
- 读入药名
s,先原样输出它(第一行)。 - 看第 0 个字符:如果是小写字母,就转成大写。
- 从第 1 个字符到末尾:如果是大写字母,就转成小写。
- 输出处理好的药名(第二行)。
举例:
ASPIRIN→ 首字符A本来就是大写不用动,其余SPIRIN全部转小写 →Aspirin。参考代码
// 整理药名:首字母大写,其余字母小写,先输出原样再输出整理结果 #include <iostream> using namespace std; int main() { string s; // 混乱的药名 cin >> s; // 输入药名 cout << s << endl; // 第一行输出未整理的药名 // 首字母:如果是小写就变成大写 if (s[0] >= 'a' && s[0] <= 'z') s[0] = s[0] - 'a' + 'A'; // 其余字母:如果是大写就变成小写 for (int i = 1; i < (int)s.size(); i++) if (s[i] >= 'A' && s[i] <= 'Z') s[i] = s[i] - 'A' + 'a'; cout << s << endl; // 第二行输出整理好的药名 return 0; }复杂度分析
药名长度不超过 50。整理时从头到尾扫描一遍,每个字符处理一次。记长度为 n,时间复杂度 O(n),空间只需保存一个字符串,O(n)。
- 小写转大写:
- 1