逆序方法

 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;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务