21xrx.com
2024-09-20 00:00:12 Friday
登录
文章检索 我的文章 写文章
C++ 字符串倒序双指针
2023-07-10 03:31:37 深夜i     --     --
C++ 字符串 倒序 双指针

在 C++ 中,字符串是一种常见的数据类型,并且字符串的处理在编程中也经常需要。其中一个常见的问题就是如何将字符串倒序输出。本篇文章将介绍一种利用双指针的方法来解决这个问题。

首先,我们需要明确一点,字符串是一个字符数组,因此可以使用指针来访问字符数组元素。双指针法就是利用两个指针分别指向字符串的开头和结尾,然后让它们不断地向中间移动,直到它们相遇为止。

具体来说,在这个过程中,我们需要先检查字符串是否为空或长度为1,如果是,则说明已经是倒序,直接输出即可。如果不是,那么我们就需要继续下去。

在双指针法中,我们首先将第一个指针指向字符串的开头,将第二个指针指向字符串的结尾。然后,我们使用一个循环将这两个指针分别向中间移动。在每一次循环中,我们比较这两个指针所指向的字符是否相等,如果不相等,则将它们所指向的字符交换位置。当两个指针相遇时,整个字符串的顺序就已经被翻转了。

下面是使用双指针法对字符串进行翻转的实现示例:


#include <iostream>

#include <string>

using namespace std;

void reverseString(string& s) {

  // 如果字符串为空或长度为1,则直接返回

  if (s.empty() || s.size() == 1)

    return;

  

  int left = 0;

  int right = s.size() - 1;

  while (left < right) {

    // 比较两个指针所指向的字符是否相等

    if (s[left] != s[right]) {

      // 交换这两个指针所指向的字符

      swap(s[left], s[right]);

    }

    // 将两个指针分别向中间移动一位

    left++;

    right--;

  }

}

int main() {

  string s = "hello world";

  reverseString(s);

  cout << s << endl; // 输出"dlrow olleh"

  return 0;

}

在上面的示例中,我们定义了一个名为`reverseString`的函数,它接受一个字符串的引用作为参数。该函数首先检查字符串的长度是否大于1,如果是,则利用双指针法对字符串进行翻转。

最后,我们在`main`函数中定义了一个字符串`s`,将其值设置为`"hello world"`。我们调用`reverseString`函数,并将`s`作为参数传递给它。最后,我们输出翻转后的字符串`s`,结果为`"dlrow olleh"`。

总之,双指针法是一种比较简单有效的对字符串进行翻转的方法。它的时间复杂度为O(n),空间复杂度为O(1),在编写 C++ 代码时,如果需要对字符串进行翻转,可以考虑使用这种方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复