时间限制:1秒
空间限制:32768K
1 2 3 4 |
|
输入描述:
任意长度字符串
输出描述:
压缩后的字符串
输入例子1:
xxxxyyyyyyzbbb
输出例子1:
3x5yz2b
这一道题目是一道经典的双指针问题,使用两个指针扫一遍,在O(N)的时间,O(N)的空间即可解决。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str, res;
getline(cin, str);
int i = 0, j = 0;
while (i < str.size() && j < str.size()) {
while(j<str.size() && str[i] == str[j]) {
j++;
}
if (j - i > 1) {
res += to_string(j - i -1);
}
res += str[i];
i = j;
}
cout << res << endl;
}