思路
双指针 + map
读取一个字符串, l, r为字符串开始位置, 把s[l]映射的int值 +1, r 来判断l 后相同字符, 相同映射值 +1, 不同改变l 位置
拓展
- map:c++ STL
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
int n;
int main()
{
cin >> n;
while(n -- )
{
string s;
cin >> s;
map<char, int> m;
int len = s.size();
for(int l = 0, r = 0; l < len; l = ++ r)
{
m[s[l]] ++ ;
while(r + 1 < len && s[r + 1] == s[l])
{
m[s[l]] ++ ;
r ++ ;
}
if(m[s[l]] > 1) cout << m[s[l]] << s[l];
else cout << s[l];
m[s[l]] = 0;
}
cout << endl;
}
return 0;
}