题目:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
题解:
用一个新的字符串,以空格为单词分界线,再用append函数从单词尾添加来反转单词
class Solution {public:string reverseWords(string s) {string ans="";int len=s.size();int i = 0;//处理开始空格while(s[i]==' ')i++;//翻转两次while (i<len){int start=i;while(i<len&&s[i]!=' ') i++;//添加翻转单词一遍for (int j = start ; j < i; j++){ans+=s[i-j-1+start];//从单词尾加到单词头}while(i<len&&s[i]==' '){i++;}//单词结尾但是非句子结尾添加空格if(i<len-1||(i==len-1&&s[i]!=' ')) ans+=' ';}//第二遍翻转 全部倒过来reverse(ans.begin(),ans.end());return ans;}};
