题目来源
题目描述
题目解析
- 分开统计字母和数字的个数
- 将个数多的放在前面
- 如果个数相差超过 1 ,就无法重新排列
class Solution {
public:
string reformat(string s) {
vector<char> vc_a;
vector<char> vc_b;
for (auto c : s) {
if (isalpha(c)) {
vc_a.push_back(c);
}
if (isdigit(c)) {
vc_b.push_back(c);
}
}
if(vc_a.size() < vc_b.size()){
std::swap(vc_a, vc_b);
}
if(vc_a.size() - vc_b.size() > 1){
return {};
}
std::string ans;
for (int i = 0; i < vc_a.size(); ++i) {
ans += vc_a[i];
if(i >= vc_b.size()){
continue;
}
ans += vc_b[i];
}
return ans;
}
};