问题面试
Given an input string, reverse the string word by word.app
For example, Given s = "the sky is blue", return "blue is sky the".spa
面试时我应该至少问的问题blog
我大概想了下,可是没有问出来,须要改进!ip
代码分析字符串
class Solution { public: static void reverseWords(string &s) { int len = s.length(); string result; for(int i= len - 1; i >= 0; ) { int lastend = 0; while(i >= 0 && s[i] == ' ') //须要先判断i >=0,不然s[i]会出错 { i--; } if(i < 0) //这里须要break,由于可能一连串的空格,没有任何字母,这时就应该及时退出 break; lastend = i; while(i >= 0 && s[i] != ' ') //这里也同样,须要先保证i在合法范围,再访问s[i] { i--; } if(i <= lastend) // i may be -1 { if(!result.empty()) result.append(" "); // 至少有一个字符串时,须要添加空格 result.append(s.substr(i+1, lastend - i)); } } s.assign(result); } };