LeetCode算法网站算法题
https://leetcode-cn.com/problems/rearrange-spaces-between-words/
class Solution {
public:
string reorderSpaces(string text) {
string res;
int i=0;
int word=0;
int len=text.size();
vector<string>sarr;
while(i<len){
string s;
while(i<len&&text[i]==' ')
i++;
while(i<len&&text[i]!=' '){
s+=text[i];
i++;
word++;
}
if(s.size()!=0)
sarr.push_back(s);
}
int KonNum=len-word;
//cout<<word<<" "<<KonNum<<sarr.size();
if(sarr.size()==1){
res+=sarr[0];
res+=string(KonNum,' ');
}else{
int a=KonNum/(sarr.size()-1);
int b=KonNum%(sarr.size()-1);
//cout<<a<<" "<<b;
for(int o=0;o<sarr.size();o++){
if(o)
res+=string(a,' ');
res+=sarr[o];
}
res+=string(b,' ');
}
return res;
}
};
这道题目学到了一种对于字符串中空格很巧的处理方法,就是使用两层while循环嵌套着,遇到空格指针就不断后移,遇到字符就使用一个字符串存储。最终就可以把字符串和空格给区分开了。
while(i<len){
string s;
while(i<len&&text[i]==' ')
i++;
while(i<len&&text[i]!=' '){
s+=text[i];
i++;
word++;
}
if(s.size()!=0)
sarr.push_back(s);
}