LeetCode/双指针映射综合
1. 重新格式化字符
给你一个混合了数字和字母的字符串 s,其中的字母均为小写英文字母。
请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同
class Solution {
public:
string reformat(string s) {
int digits=0;
for(char&c:s)
if(isdigit(c)) digits++;//计算数字个数
int chars = s.size()-digits;//计算字符个数
if(abs(chars-digits)>1) return "";//不能格式化
bool flag = digits>=chars;//数字比字符多
for(int i=0,j=1;i<s.size();i+=2){//遍历可能多的位置
if(isdigit(s[i])==flag) continue;//满足在位条件,跳过直至不满足
else{
while(isdigit(s[j])!=flag)//满足在位条件,找不满足的
j+=2;
swap(s[i],s[j]);//交换两值
}
}
return s;
}
};