总时间限制: 1000ms 内存限制: 65536kB描述
在数据压缩中,一个常用的途径是行程长度压缩。对于一个待压缩的字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的情况比较有效。 例如,如果待压缩串为"AAABBBBCBB",则压缩的结果是(A,3)(B,4)(C,1)(B,2)。当然,如果相邻字符重复情况较少,则压缩效率就较低。
现要求根据输入的字符串,得到大小写不敏感压缩后的结果(即所有小写字母均视为相应的大写字母)。
输入一个字符串,长度大于0,且不超过1000,全部由大写或小写字母组成。输出输出为一行,表示压缩结果,形式为: (A,3)(B,4)(C,1)(B,2) 即每对括号内部分别为字符(都为大写)及重复出现的次数,不含任何空格。样例输入
aAABBbBCCCaaaaa
样例输出
(A,3)(B,4)(C,3)(A,5)
来源习题(12-5)
1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 using namespace std;
6 char a[10001];
7 int tot=1;
8 int main()
9 {
10 gets(a);
11 int l=strlen(a);
12 for(int i=0;i<l;i++)
13 {
14 if(a[i]>=97&&a[i]<=122)
15 {
16 a[i]=a[i]-32;
17 }
18 }
19 for(int i=0;i<l;i++)
20 {
21 if(a[i]==a[i+1])
22 {
23 tot++;
24 }
25 else
26 {
27 printf("(%c,%d)",a[i],tot);
28 tot=1;
29 }
30 }
31 return 0;
32 }