openjudge 编码字符串

总时间限制: 

1000ms

 

内存限制: 

65536kB

描述

在数据压缩中,一个常用的方法是行程长度编码压缩。对于一个待压缩的字符串,我们可以依次记录每个字符及重复的次数。例如,待压缩的字符串为"aaabbbbcbb",压缩结果为(a,3)(b,4)(c,1)(b,2)。这种压缩对于相邻数据重复较多的情况有效,如果重复状况较少,则压缩的效率较低。

现要求根据输入的字符串,首先将字符串中所有大写字母转化为小写字母,然后将字符串进行压缩。

输入

一个字符串,长度大于0,且不超过1000,全部由大写或小写字母组成。

输出

输出为编码之后的字符串,形式为:(a,3)(b,4)(c,1)(d,2),即每对括号内分别为小写字符及重复的次数,不含任何空格。

样例输入

aAABBbBCCCaaaaa

样例输出

(a,3)(b,4)(c,3)(a,5)
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
using namespace std;
char st[1001];
char record[1001],t,c;
int recordnum[1001];
int i,cnt=0;
int main() {
	scanf("%s", &st);
	t = st[0];
	if ('A' <= t && t <= 'Z')
		t = t + 32;
	record[cnt] = t;
	recordnum[cnt]=1;
  
	for (i = 1; i < 10001; i++) {
		if (st[i] == '\0')
			break;
		if ('A' <= st[i] && st[i] <= 'Z')
			c = st[i] + 32;
		else
			c = st[i];
		if (t == c)
			recordnum[cnt]++;
		else{
			t = c;
			record[++cnt] = t;
			recordnum[cnt] = 1;
		}
	}
	for (i = 0; i <= cnt; ++i) 
		printf("(%c,%d)", record[i], recordnum[i]);

	//system("pause");
	return 0;
}

来源

cs10116 final exam

你可能感兴趣的:(poj)