任何疑问、意见、建议请留言公众号:一航代码
题目描述:
将形如xxxxxdddfff的字符串,压缩为x5d3f3,字符后面的数字表示前面字符在原字符串中出现的次数。若字符只出现一次,则无需再字符后面加数字。
输入格式:
输入一个字符串。
输出格式:
若模式串是文本串的子字符串,输出删除子字符串后的字符串。
若模式串不是文本串的子字符串,输出-1。
输入样例:
xxxxxdddfff
abcd
输出样例:
x5d3f3
abcd
解决方法:
(1)代码实现:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
if (s.size() == 1)
{
cout << s << endl;
return 0;
}
s += '\n'; //增加一个回车标志位表示结束,前一个字符不可能与它相等
int count = 1;
for (int i = 0; i < (int)s.size(); i++)
{
if (s[i] == s[i + 1])
{
count++;
}
else if (s[i] != s[i + 1] && count != 1)
{
cout << s[i] << count;
count = 1;
}
else if (s[i] != s[i + 1] && count == 1)
{
cout << s[i];
count = 1;
}
}
return 0;
}