给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let‘s take LeetCode contest"
输出: "s‘teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
code1:使用自定义reverse函数
class Solution { public: string reverseWords(string s) { if(s.empty()) return ""; for(int i=0;i<s.size();) { if(s[i]==‘ ‘) continue; int j=i+1; while(s[j]!=‘\0‘&&s[j]!=‘ ‘) ++j; --j; reverseWordsCore(s,i,j); i=j+2; } return s; } private: void reverseWordsCore(string &s,int i,int j) { while(i<=j) swap(s[i++],s[j--]); return; } };
code2:使用stl中reverse
class Solution { public: string reverseWords(string s) { if(s.empty()) return ""; for(int i=0;i<s.size();) { if(s[i]==‘ ‘) continue; int j=i+1; while(s[j]!=‘\0‘&&s[j]!=‘ ‘) ++j; reverse(s.begin()+i,s.begin()+j); i=j+1; } return s; } };
原文地址:https://www.cnblogs.com/tianzeng/p/11994053.html
时间: 2024-11-01 20:32:12