Beispiel #1
0
    void reverseWords(string &s) {
        int i=0, j=0, wordStart=0;  // i: index to scan the origin string; j: index to create the result
        int len=s.length();
        bool firstWord=true;

        while (true) {
            while (i<len && s[i] == ' ') i++;  // skip spaces in front of the word
            if (i==len) break;
            if (firstWord) firstWord = false;  // add one space between words
            else s[j++] = ' ';
            wordStart=j;
            while (i<len && s[i]!=' ') {s[j]=s[i]; j++; i++;} 
            reverseword(s, wordStart, j-1);  // reverse letters in each word
        }
        s.resize(j);  // resize result string
        reverseword(s, 0, j-1);  // reverse whole string
    }
Beispiel #2
0
void Solution::reverseWords(string &s)
{
	int i=0, j=0;
	int l=0;
	int len=s.length();
	int wordcount=0;
	
	while(true){
		while(i<len && s[i] == ' ') i++;  // skip spaces in front of the word
		if(i==len) break;
		if(wordcount) s[j++]=' ';
		l=j;
		while(i<len && s[i] != ' ') {s[j]=s[i]; j++; i++;}
		reverseword(s,l,j-1);                // reverse word in place
		wordcount++;
		
	}
	
	s.resize(j);                           // resize result string
	reverseword(s,0,j-1);                  // reverse whole string
}