LeetCode Reverse String(字符串反转)

本文介绍了一种简单的字符串反转方法,通过使用StringBuilder实现字符串的高效反转。文章提供了一个完整的Java代码示例,展示了如何逐字符交换来达到反转的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:给出一个字符串,将其反转

代码如下:

public class Solution
{
    public String reverseString(String s)
    {
        StringBuilder sb = new StringBuilder(s);

        int left = 0, right = sb.length() - 1;
        while (left < right)
        {
            char ch = sb.charAt(left);
            sb.setCharAt(left, sb.charAt(right));
            sb.setCharAt(right, ch);

            left++;
            right--;
        }

        return sb.toString();
    }
}


### 三、C++ 反转字符串的方法 #### 3.1 使用双指针交换字符 在 C++ 中,可以使用双指针法,从字符串的两端开始逐个交换字符,直到两个指针相遇。这种方法效率高,适用于 `char[]` 或 `std::vector<char>` 类型的字符串。示例代码如下: ```cpp #include <iostream> #include <cstring> void reverseString(char* s) { int left = 0; int right = strlen(s) - 1; while (left < right) { char temp = s[left]; s[left] = s[right]; s[right] = temp; left++; right--; } } int main() { char s[] = "Hello, World!"; reverseString(s); std::cout << s << std::endl; return 0; } ``` 该方法直接操作字符数组,具有较高的性能[^1]。 #### 3.2 使用 `std::string` 和新字符串拼接 可以通过遍历原始字符串,将每个字符插入到新字符串的最前面,从而实现反转。这种方法适用于 `std::string` 类型,但性能略低。示例代码如下: ```cpp #include <iostream> #include <string> int main() { std::string s1, s2; std::cin >> s1; for (int i = 0; i < s1.size(); i++) { s2 = s1[i] + s2; } std::cout << s2 << std::endl; return 0; } ``` 该方法实现简单,但频繁的字符串拼接操作会影响性能[^2]。 #### 3.3 使用递归方式反转字符串 可以通过递归函数实现字符串反转。在每次递归调用中交换左右字符,并对剩余子串递归处理。示例代码如下: ```cpp #include <iostream> #include <string> void reverseString(std::string& s, int left, int right) { if (left >= right) return; std::swap(s[left], s[right]); reverseString(s, left + 1, right - 1); } int main() { std::string s = "Hello, World!"; reverseString(s, 0, s.size() - 1); std::cout << s << std::endl; return 0; } ``` 递归方式实现简洁,但需要注意栈溢出问题[^3]。 #### 3.4 使用标准库函数 `reverse` C++ 标准库提供了 `std::reverse` 函数,可以直接用于反转字符串。该方法适用于 `std::vector<char>` 或 `std::string`。示例代码如下: ```cpp #include <iostream> #include <algorithm> #include <string> int main() { std::string s = "Hello, World!"; std::reverse(s.begin(), s.end()); std::cout << s << std::endl; return 0; } ``` 该方法简洁高效,推荐用于标准库容器中的字符串反转[^4]。 #### 3.5 使用 `std::vector<char>` 和双指针反转LeetCode 等编程平台上,常见的输入类型是 `std::vector<char>`,可以使用双指针法进行反转。示例代码如下: ```cpp #include <vector> #include <algorithm> class Solution { public: void reverseString(std::vector<char>& s) { int begin = 0; int end = s.size() - 1; while (begin < end) { std::swap(s[begin++], s[end--]); } } }; ``` 该方法适用于大规模字符串反转,且满足在线评测系统的要求[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值