1 条题解
-
0
练69.3 整理药名
解题思路
按字符位置处理药名:下标0若是字母转大写,其余字母转小写,数字与连字符不变。
正确性说明
依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。
易错点
不是找第一个字母大写;2-PENICILLIN应为2-penicillin。
复杂度
总字符S,时间O(S),空间O(最长药名)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; while (n--) { string s; cin >> s; for (size_t i = 0; i < s.size(); i++) { unsigned char c = s[i]; if (isalpha(c)) s[i] = char(i == 0 ? toupper(c) : tolower(c)); } cout << s << "\n"; } return 0; }
- 1