时间限制:1秒
空间限制:32768K
1 2 3 4 |
|
输入描述:
任意长度字符串
输出描述:
压缩后的字符串
输入例子1:
xxxxyyyyyyzbbb
输出例子1:
3x5yz2b
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
char str[100000];
gets(str);///输入串
int len = strlen(str);
int num = 0;
if(str[0] == str[1])///第一个字符与第二个字符比较,开头输出
{
num++;
for(int i = 2; i < len; i++)
{
if(str[i] == str[i-1])num++;
else
{
if(num == 0)///单个字符输出
{
cout<<str[i-1];
}else
{
cout<<num<<str[i-1];///多个连续字符输出
num = 0;
}
}
}
if(num!=0)cout<<num<<str[len-1]<<endl;///特判末尾连续多个字符
else if(str[len-1] != str[len-2])cout<<str[len-1]<<endl;///特判末尾为单字符
}else
{
cout<<str[0];///前两个字符不相同就直接先输出第一个
for(int i = 2; i < len; i++)
{
if(str[i] == str[i-1])num++;
else
{
if(num == 0)///单个字符输出
{
cout<<str[i-1];
}else///连续多个字符输出
{
cout<<num<<str[i-1];
num = 0;
}
}
}
if(num!=0)cout<<num<<str[len-1]<<endl;///特判末尾连续多个字符
else if(str[len-1] != str[len-2])cout<<str[len-1]<<endl;///特判末尾为单字符
}
return 0;
}