解题思路:
(1)自定义排序
class Solution {
public:
string arrangeWords(string t) {
vector<pair<string,pair<int,int>> > v;
int i=0;
string str="";
while(i<t.length()) {
if(isalpha(t[i])) {
str="";
while(i<t.length() && isalpha(t[i])) {
str+=tolower(t[i]);
i++;
}
if(str!="") v.push_back({str,{str.length(),i}});
} else i++;
}
auto comp=[&](const pair<string,pair<int,int>> &a,const pair<string,pair<int,int>> &b) {
if(a.second.first<b.second.first) return true;
else if(a.second.first>b.second.first) return false;
else if(a.second.second<b.second.second) return true;
else return false;
};
sort(v.begin(),v.end(),comp);
str="";
for(int i=0;i<v.size();i++) {
if(i==0) {
str.push_back(toupper(v[i].first[0]));
str=str+v[i].first.substr(1);
} else str+=v[i].first;
str+=' ';
}
return str.substr(0,str.length()-1);
}
};