题解
字符串的逆序
1 条题解
-
0
解题思路
题目要求把一个字符串倒过来输出。
比如 "abcde" 倒过来是 "edcba"。
一个关键的注意点:字符串里可能有空格,所以必须用 getline(cin, s) 整行读入,不能用 cin >> s。
怎么逆序输出呢?字符串 s 的第 0 个字符是 s[0],最后一个字符是 s[s.size()-1]。我们只要从最后一个字符开始,一直往前输出到第 0 个字符,就是逆序啦。
解题步骤:
- 用 getline 读入字符串 s;
- 用一个循环,下标 i 从 s.size()-1 开始,一直减到 0,每次输出 s[i];
- 最后输出一个换行。
参考代码
// P4593 字符串的逆序:逆序输出一个可能含空格的字符串 #include <iostream> using namespace std; int main() { string s; getline(cin, s); // 可能有空格,用 getline 整行读取 // 从最后一个字符往前依次输出 for (int i = (int)s.size() - 1; i >= 0; i--) cout << s[i]; cout << endl; // 输出换行 return 0; }复杂度分析
字符串的长度不超过 1000。程序把每个字符从后往前输出一遍,时间大约是 O(n),其中 n 是字符串的长度。除了字符串本身外没有额外的大空间,空间是 O(1)。
- 1