最近突然发现了leetcode这么个网站,大喜,决定刷完。。
本人菜鸟,只为提高代码水平,记录一下这个过程。
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
class Solution {
public:
void reverseWords(string &s) {
int length=s.length();
string s1="";string s2="";
int k1=length;
int k2=0;
int flag=0;
for(int i=length-1;i>=0;i--)
{
f(i>0){
if((s.at(i)==' ')&&(s.at(i-1)!=' ')||(i==length-1))
{
k1=i;
if((i==length-1)&&(s.at(length-1)!=' '))
k1=length;
}
if((s.at(i)!=' ')&&(s.at(i-1)==' '))
{
if(flag>0) s1.append(" ");
k2=i;
s1.append(s,k2,k1-k2);
flag++;
}
}
if((i==0)&&(s.at(0)!=' ')){
k2=0;
if(flag>0) s1.append(" ");
s1.append(s,k2,k1-k2);
}
}
s=s1;
}
};
思路:对任意一个字符串,首先取两个标志K1,K2用于截取某一个单词。初始化时,k2在最顶端,k1在末尾。通过循环判断k1,和k2的位置即可。