字符串中的反向单词
Reverse words in a string c++
我刚刚开始学习c++。我正在写一个程序来反转字符串中的单词顺序。如果有一句话,"我爱纽约!"应该改成"!"纽约新爱我"。
我使用的算法有两个简单的步骤。
- 将单词的字母倒序。
例如,对于上面的字符串,我将首先将其转换为,"!当我进化成"I",然后我就会改变单词的字母,比如"!"kroY"变成"York"。
现在的问题是,我怎么知道从哪里开始,从哪里结束。这就是我目前所做的。但这个项目并没有像预期的那样发挥作用。我不能辨认出这个词,然后把它倒过来。
#include <iostream>
#include <string>
std::string reverseText(std::string x){
std::string y;
for(int i=x.size()-1;i>=0;i--) y += x[i];
return y;
}
std::string reverseWords(std::string x){
std::string y = reverseText(x);
bool wordFound = true;
std::string temp1,ans;
for(size_t i=0;i<y.size();i++){
if(wordFound){
if(y[i]!=' ') temp1+=y[i]; // if there is a letter, store that in temp1.
else if(y[i]==' ') // if there is a space, that means word has ended.
{
ans += reverseText(temp1); // store that word, in ans.
temp1=" ";
wordFound=false;}
}
if(y[i]==' ' && y[i+1]!=' ') wordFound=true;
}
return ans;
}
int main(){
std::cout<<reverseWords("My name is Michael");
}
输出:Michaelis name
我还没有对它进行广泛的测试,它仍然可能存在问题,但是它为您给出的情况产生了正确的输出。我试着在不改变太多的情况下修复你的代码。
#include <iostream>
#include <string>
std::string reverseText(std::string x){
std::string y;
for(int i=x.size()-1;i>=0;i--) y += x[i];
return y;
}
std::string reverseWords(std::string x) {
std::string y = reverseText(x);
bool wordFound = true;
std::string temp1 = " ", ans;
for(size_t i = 0; i < y.size(); i++) {
if(wordFound){
if(y[i] != ' '){
temp1 += y[i]; // if there is a letter, store that in temp1.
} else if(y[i]==' ') { // if there is a space, that means word has ended.
ans += reverseText(temp1); // store that word, in ans.
temp1 = " ";
wordFound=false;
}
}
if(y[i]==' ' && y[i+1]!=' ') wordFound=true;
}
ans += reverseText(temp1);
return ans;
}
int main(){
std::cout<<reverseWords("My name is Michael");
}
变更汇总
忘记用空格
初始化第一个字符串std::string temp1 = " ", ans;
在循环y之后,您忘记将temp1的内容"刷新"到answer
ans += reverseText(temp1);
相关文章:
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- C++-字符串是否包含一个带有简单循环的单词
- 在C++中查找(奇怪的)字符串中的单词
- 当字符串是某个单词时给出输出?
- 替换字符串中的单词,但忽略引号中的单词
- 替换字符串位置 X 中的单词C++
- 视觉C++使用 map 来比较字符串中的每个单词
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 输出返回编号。等于输入字符串的单词的字符串数
- 在字符串的每个单词的末尾插入字符串
- 分析字符串中的双精度和单词
- 如何使用运算符>>在自定义字符串中输入多个单词?
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- 从文件 (C++) 输入两个单词字符串
- 在一行中输入具有其他输入类型的多个单词字符串
- 打印以 "a" 开头的单词(字符串中)
- 如何让我的代码以不会切断单词(字符串)的方式运行?
- 句子变成单词c++字符串