压缩字符串

简介: /*压缩字符串输入只含A-Z的字符串 不超过1000个字母 将连续相同字母压缩为重复次数+字母例输入ABBCCC输出A2B3C*/#include int main(){ int i,count; char tch,str[1005];...
/*压缩字符串
输入只含A-Z的字符串 不超过1000个字母 将连续相同字母压缩为重复次数+字母
例
输入
ABBCCC
输出
A2B3C
*/
#include <stdio.h>
int main()
{
	int i,count;
	char tch,str[1005];//存储字符串最长1000个字符
	while(gets(str))//输入字符
	{
		count = 1;
		tch = str[0];//取出str[0]
		for(i=1; str[i] != '\0' ;++i)//str[0-i]判断遇到\0结束
		{
			if(tch == str[i])//第一个str[0]与str[i]重复
				++count;
			else             //不重复
			{
				if(1 == count)//**加上好,不加会不能AC
					printf("%c",tch);
				else   
					printf("%d%c",count,tch);//打印A2B3C
				count = 1;
				tch = str[i];//改变tch,下次从tch开始判断
			}
		}
		if(1 == count)
			printf("%c\n",tch);
		else
			printf("%d%c\n",count,tch);
	}
	return 0;
}

另外:

把字符串中出现的连续相同的多个字符使用该字符以及出现的次数表示,例如ABBCCC中的BB可以使用2B表示,可以使用3C表示。题目要求对给定的字符串编码。

解题思路:遍历字符串,取出每个字符与之前的字符进行比较,如果相等计数加1,不相同,则从新计数。例如ABBCCC,可以处理如下。

先初始化,c表示前一个字符,count表示统计次数。c=’0’,count=0。

对于A,之前没有字符,count=1,c=’A’;

对于B,之前的字符是’A’,输出A,count=1,c=’A’;

对于B,之前的字符是’B’,count=2;

对于C,之前的字符是’B’,输出2B,count=1,c=’C’;

对于C,之前的字符是’C’,count=2;

对于C,之前的字符是’C’,count=3;

最后输出3C。

输出的结果是A2B3C

参考代码如下:
 
  1. /*
  2. * 字符串编码
  3. */
  4. public static void test5(String str){
  5. int count=1;
  6. char c=str.charAt(0);
  7. for(int i=1;i<str.length();i++){
  8. if(str.charAt(i)==c){
  9. count++;
  10. }else{
  11. if(count!=1)
  12. System.out.print(count);
  13. System.out.print(c);
  14. count=1;
  15. c=str.charAt(i);
  16. }
  17. }
  18. if(count!=1)
  19. System.out.print(count);
  20. System.out.print(c);
  21. }


目录
相关文章
|
3月前
开始压缩
【9月更文挑战第05天】
20 2
|
6月前
|
算法 程序员
程序员必知:字符串压缩(三)之短字符串压缩
程序员必知:字符串压缩(三)之短字符串压缩
145 0
|
6月前
1078 字符串压缩与解压 (20 分)
1078 字符串压缩与解压 (20 分)
|
7月前
|
算法
443.压缩字符串
443.压缩字符串
29 0
|
7月前
面试题 01.06. 字符串压缩
面试题 01.06. 字符串压缩
24 0
|
7月前
面试题 01.06:字符串压缩
面试题 01.06:字符串压缩
41 0
|
算法 Java Linux
GZIP压缩字符串
GZIP压缩字符串
208 0
|
算法 Java Linux
GZIP压缩字符串2
GZIP压缩字符串2
116 0
|
存储 编解码 算法
编码压缩介绍
压缩编码介绍,JPEG标准,H.264,AVS,预测,变换,量化,熵编码,环路滤波
139 0
|
API Android开发