逆序方法
1.末尾向开头遍历
#include
# include
using namespace std;
int main(){
string s;
cin >> s;
// 从字符串最后一个字符开始,反向遍历到第一个字符
for(int i = s.length() - 1; i >= 0; i--){
cout << s[i];
}
cout << endl;
return 0;
}
2.reverse
#include
# include
#include // 包含 reverse 函数
using namespace std;
int main() {
string s;
cin >> s;
reverse(s.begin(), s.end()); // 反转字符串:begin()是起始迭代器,end()是结束迭代器
cout << s << endl;
return 0;
}
3.双指针
#include
# include
using namespace std;
int main() {
string s;
cin >> s;
int left = 0; // 左指针:起始位置
int right = s.length() - 1; // 右指针:末尾位置
while (left < right) { // 两指针未相遇时,交换字符
swap(s[left], s[right]); // 交换左右指针指向的字符(C++内置swap函数)
left++; // 左指针右移
right--; // 右指针左移
}
cout << s << endl;
return 0;
}
4.
#include
# include
using namespace std;
// 递归函数:逆序输出字符串 s(从索引 index 开始)
void reverseString(const string& s, int index) {
if (index == s.length()) { // 递归终止条件:索引到达字符串末尾
return;
}
// 先递归处理下一个字符(子问题:逆序输出 s[index+1 ... end])
reverseString(s, index + 1);
// 递归返回后,输出当前字符(子问题解决后,输出当前字符,实现逆序)
cout << s[index];
}
int main() {
string s;
cin >> s;
reverseString(s, 0); // 从索引 0 开始递归
cout << endl;
return 0;
}
#include
# include
using namespace std;
int main(){
string s;
cin >> s;
// 从字符串最后一个字符开始,反向遍历到第一个字符
for(int i = s.length() - 1; i >= 0; i--){
cout << s[i];
}
cout << endl;
return 0;
}
2.reverse
#include
# include
#include // 包含 reverse 函数
using namespace std;
int main() {
string s;
cin >> s;
reverse(s.begin(), s.end()); // 反转字符串:begin()是起始迭代器,end()是结束迭代器
cout << s << endl;
return 0;
}
3.双指针
#include
# include
using namespace std;
int main() {
string s;
cin >> s;
int left = 0; // 左指针:起始位置
int right = s.length() - 1; // 右指针:末尾位置
while (left < right) { // 两指针未相遇时,交换字符
swap(s[left], s[right]); // 交换左右指针指向的字符(C++内置swap函数)
left++; // 左指针右移
right--; // 右指针左移
}
cout << s << endl;
return 0;
}
4.
#include
# include
using namespace std;
// 递归函数:逆序输出字符串 s(从索引 index 开始)
void reverseString(const string& s, int index) {
if (index == s.length()) { // 递归终止条件:索引到达字符串末尾
return;
}
// 先递归处理下一个字符(子问题:逆序输出 s[index+1 ... end])
reverseString(s, index + 1);
// 递归返回后,输出当前字符(子问题解决后,输出当前字符,实现逆序)
cout << s[index];
}
int main() {
string s;
cin >> s;
reverseString(s, 0); // 从索引 0 开始递归
cout << endl;
return 0;
}
全部评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
