21xrx.com
2025-04-28 17:20:49 Monday
文章检索 我的文章 写文章
C++单词翻转
2023-07-05 00:41:08 深夜i     11     0
C++ 单词翻转 字符串操作 数据结构 算法

在C++编程中,经常需要对字符串进行操作。其中最常见的操作之一是翻转字符串中的单词。在这篇文章中,我们将讨论如何使用C++来实现单词翻转。

单词翻转的思路很简单:将字符串中的每个单词翻转,然后再将整个字符串翻转一次即可。例如,将字符串 "Hello, world!" 翻转成 "olleH, dlrow!" 。

我们来看一下具体的实现思路。首先,我们需要定义一个函数来翻转单词。这个函数将取一个字符串参数作为输入,并输出翻转后的字符串。这个函数的实现方法是使用两个指针来读取和翻转字符串。指针1从字符串开头开始搜索,指针2则从字符串结尾开始搜索。当找到一个单词时(即遇到一个空格或者结束符),将这个单词翻转。最终,我们将得到翻转后的字符串。

下面是这个函数的具体实现:

string reverseWord(string word) {
  int start = 0, end = word.size() - 1;
  while (start < end) {
    swap(word[start], word[end]);
    start++;
    end--;
  }
  return word;
}

现在我们已经拥有了一个可以翻转单词的函数。接下来,我们需要使用这个函数来翻转整个字符串。我们的方法是使用两个指针来读取和翻转字符串。指针1从字符串开头开始搜索,指针2则指向字符串中的每个单词的结尾位置。当找到一个单词时,将这个单词翻转,并更新指针位置。最终,我们将得到翻转后的字符串。

下面是这个函数的具体实现:

string reverseString(string str) {
  int start = 0, end = 0;
  while (end < str.size()) {
    if (str[end] == ' ') {
      str.replace(start, end - start, reverseWord(str.substr(start, end - start)));
      start = end + 1;
    }
    end++;
  }
  str.replace(start, end - start, reverseWord(str.substr(start, end - start)));
  reverse(str.begin(), str.end());
  return str;
}

现在我们已经拥有了一个可以翻转整个字符串的函数。我们来测试一下:

int main() {
  string str = "Hello, world!";
  cout << "Original string: " << str << endl;
  cout << "Reversed string: " << reverseString(str) << endl;
  return 0;
}

输出结果:

Original string: Hello, world!
Reversed string: dlrow ,olleH!

从输出结果可以看出,我们已经成功地翻转了字符串中的单词。

总结来说,单词翻转是一个很常见的字符串操作,也是很多面试题目中的必考点。在C++中,我们可以使用指针来解决这个问题。通过实现一个函数来翻转单词,再实现一个函数来翻转整个字符串,我们可以在C++中轻松地实现单词翻转。

  
  

评论区