📅  最后修改于: 2023-12-03 15:14:04.584000             🧑  作者: Mango
在字符串处理中,反转单词顺序是一个常见的需求,比如将"I love programming in C++"反转为"C++ in programming love I"。本文将介绍如何使用C++编写一个反转单词顺序的程序。
假设我们有一个字符串"Hello World",我们需要将其按单词反转。具体的反转过程分为以下几个步骤:
定义一个新字符串,用于存储反转后的结果。
从后往前遍历原字符串,将每个单词复制到新字符串中。
每个单词之间要添加空格。
将新字符串拷贝回原字符串中。
输出反转后的结果。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void reverseWords(string &s) {
vector<string> v;
string word = "";
for (int i = 0; i < s.length(); i++) {
if (s[i] == ' ') {
v.push_back(word);
word = "";
} else {
word += s[i];
}
}
v.push_back(word);
string ans = "";
for (int i = v.size() - 1; i >= 0; i--) {
ans += v[i] + " ";
}
s = ans.substr(0, ans.length() - 1);
}
int main() {
string str = "I love programming in C++";
cout << "Original String : " << str << endl;
reverseWords(str);
cout << "Reversed String : " << str << endl;
return 0;
}
vector<string> v
:定义一个字符串向量,用于存储分离出来的单词。
string word = ""
:定义一个字符串,用于存储每个单词。
if (s[i] == ' ')
:判断是否为单词分隔符,如果是,将单词存入字符串向量中,并清空单词字符串。
v.push_back(word)
:将单词存入字符串向量中。
string ans = ""
:定义一个字符串,用于存储反转后的结果。
ans += v[i] + " "
:将每个单词按反转顺序添加到结果字符串中。
s = ans.substr(0, ans.length() - 1)
:将反转后的字符串拷贝回原字符串中。
Original String : I love programming in C++
Reversed String : C++ in programming love I
可以看到,程序成功地将字符串按单词反转了。
本文详细介绍了使用C++编写反转字符串中单词顺序的程序。代码简洁易懂,思路清晰。希望能够帮助大家更好地理解字符串处理。