问题描述
给定一个字符串,逐个翻转字符串中的每个单词。
解题报告
没有算法。
代码跟狗屎似的。
- 首先将首尾的空格去掉。
- 然后逆序遍历字符串,依次取出每个单词,需要注意的是,第一个单词前面没有空格。
实现上,我设置一个flag
来标记当前字符是否是空格,是空格则flag赋值为false,否则flag赋值为true。如果遍历到某一个字符是空格且flag为true【代表上一个字符不是空格】,则从此处断开,形成一个新的单词;如果遍历到某一个字符是空格且flag为false【代表上一个字符是空格】,则说明这两个单词之间的空格数大于1,不做处理。
实现代码
class Solution {
public:
string reverseWords(string s) {
if(s.size()==0) return "";
string ans="",singleWord="";
bool flag=true;
int p=0;
while(p<s.size()&&s[p]==' ') p++;
int i=s.size()-1;
while(i>=0&&s[i]==' ') i--;
for(;i>=p;i--){
if(s[i]!=' '){
flag=true;
singleWord+=s[i];
}
else if(flag==true){
flag=false;
//这个条件控制是否是第一个单词
if(ans.size()!=0) singleWord+=s[i];
for(int j=singleWord.size()-1;j>=0;j--){
ans.push_back(singleWord[j]);
}
singleWord="";
}
else{
continue;
}
}
//这个条件判断是否是只包含一个空格的字符串
if(ans.size()!=0) ans.push_back(' ');
//这个循环处理最后一个单词
for(int j=singleWord.size()-1;j>=0;j--){
ans.push_back(singleWord[j]);
}
return ans;
}
};