对于ios7扫描二维码功能的实现
题目如下:
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) { if(s.empty()) return; int count = 0; int index = 0, indexTemp = 0, begin = 0, end = s.length()-1; while(s[begin] == ' ' && begin<s.length()-1) begin++; while(s[end] == ' ' && end>0) end--; if(end == 0 && s[end] == ' ') { s = ""; return; } else if(end == 0) { s = s.substr(0,1); return; } index = begin; while(index <= end) { if(s[index] == ' ') { count++; while(s[index] == ' ') index++; } count++; index++; } string temp(count,'\0'); index = end; indexTemp = 0; while(index >= begin) { if(s[index] == ' ') { temp[indexTemp] = s[index]; while(s[index] == ' ') index--; indexTemp++; } temp[indexTemp] = s[index]; indexTemp++; index--; } indexTemp = 0; begin = -1; end = -1; while(indexTemp < count) { if(temp[indexTemp] != ' ' && begin == -1) { begin = 0; } else if(indexTemp-1 >= 0 && temp[indexTemp-1] == ' '&&temp[indexTemp] != ' ') { begin = indexTemp; } else if((indexTemp+1 < count && temp[indexTemp+1] == ' ' && temp[indexTemp] != ' ') || ((indexTemp == count-1)&&temp[indexTemp] != ' ')) { end = indexTemp; reverse(temp, begin, end); } indexTemp++; } s = temp; } void reverse(string &s, int begin, int end) { while(begin < end) { char temp = s[begin]; s[begin] = s[end]; s[end] = temp; begin++; end--; } } };
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。