21xrx.com
2024-12-22 23:27:22 Sunday
登录
文章检索 我的文章 写文章
C++单词翻转
2023-07-05 00:41:08 深夜i     --     --
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++中轻松地实现单词翻转。

  
  

评论区

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