题解
拼接姓名
1 条题解
-
0
解题思路
题目要求把两个姓名按"英文字母的顺序"从小到大排好,再拼接成一个字符串输出。
"英文字母的顺序"其实就是字典序,和我们查字典一样:先比较第一个字母,如果相同再比较第二个字母,依此类推。字符串类型可以直接用
>、<、==来比较,它会自动按字典序比较。具体做法:
- 读入两个字符串
a和b。 - 如果
a > b,说明a更大,交换a和b,让小的在前面。 - 把
a和b直接拼接(cout << a << b),输出结果。
举例:
zhenghong和zhangsan。前两个字母都是zh,第三位e和a比较,因为a排在e前面,所以zhangsan更小。最终输出zhangsanzhenghong。参考代码
// 拼接姓名:按字典序把两个姓名由小到大拼接输出 #include <iostream> using namespace std; int main() { string a, b; // 两个姓名字符串 cin >> a >> b; // 输入两个姓名 if (a > b) swap(a, b); // 字典序小的放到前面 cout << a << b << endl; // 拼接输出 return 0; }复杂度分析
两个字符串长度都不超过 100。按字典序比较两个字符串只需从左到右比一次,约 O(len1+len2);拼接输出也只需 O(len1+len2)。把两个字符串的总长度记为 n,则时间复杂度为 O(n),空间上只保存了两个字符串,也是 O(n)。
- 读入两个字符串
- 1