题目描述
已经注释
算法
string reformat(string s) {
vector<char> d, c; // d代表数字digit,c代表字母 character
for (char x : s)
if (isdigit(x)) //分别放好地方
d.push_back(x);
else
c.push_back(x);
//number.size() - stringc.size() > 2;
string ans; //定义答案数组.{字符串}
if (d.size() == c.size() - 1){ //数量差1刚好可以直接拼(最后加尾数)
for (int i = 0; i < d.size(); i++){
ans += c[i];
ans += d[i]; //tm...竟然少写一个等于号、、做了假的加法(加了却没更新ans)
}
ans += c.back(); //把尾数加上
} else if (c.size() == d.size() - 1) { //同理
for (int i = 0; i < c.size(); i++) {
ans += d[i];
ans += c[i];
}
ans += d.back();
} else if (d.size() == c.size()) {
for (int i = 0; i < c.size(); i++) {
ans += d[i];
ans += c[i];
}
}
//合成完毕。数量差大于2的都不行
return ans;
}