压缩字符串

/*压缩字符串
输入只含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. }
时间: 2024-12-09 02:43:07

压缩字符串的相关文章

php压缩和解压缩字符串的方法

 本文实例讲述了php压缩和解压缩字符串的方法.分享给大家供大家参考.具体如下: 下面php代码通过gzcompress和gzuncompress压缩和解压缩字符串,可以设定压缩级别 $str = 'Hello I am a very very very very long string'; $compressed = gzcompress($str, 9);//压缩级别为9 $uncompressed = gzuncompress($compressed); echo $str, "n&quo

php压缩和解压缩字符串的方法_php技巧

本文实例讲述了php压缩和解压缩字符串的方法.分享给大家供大家参考.具体如下: 下面php代码通过gzcompress和gzuncompress压缩和解压缩字符串,可以设定压缩级别 $str = 'Hello I am a very very very very long string'; $compressed = gzcompress($str, 9);//压缩级别为9 $uncompressed = gzuncompress($compressed); echo $str, "\n&quo

gzip压缩字符串

gzip压缩字符串 的使用是减轻服务器负载,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. static string compressstring(string input)     {         string retvalue = string.empty;         if (!string.isnullorempty(input))

Android实现压缩字符串的方法示例

前言 Android端可以对字符串进行压缩,我们在进行大量简单文本传输时,可以先压缩字符串再发送.接收端接收后再解压.也可以将字符串压缩后存入数据库中,下面话不多说了,来一起看看详细的介绍吧. 使用到的类库 GZIPOutputStream 代码示例 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.

华为上机练习题:压缩字符串

题目: 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1.仅压缩连续重复出现的字符.比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc". 2.压缩字段的格式为"字符重复的次数+字符".例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz". 要求实现函数: void str

C语言中压缩字符串的简单算法小结_C 语言

应用中,经常需要将字符串压缩成一个整数,即字符串散列.比如下面这些问题: (1)搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.请找出最热门的10个检索串. (2)有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M.返回频数最高的100个词. (3)有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复.要求你按照query的频度排序. (4)给定a.b两个文件

java实现压缩字符串和java字符串过滤_java

题目一:通过键盘输入一串小写字母(a~z)组成的字符串. 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉.比如字符串"abacacde"过滤结果为"abcde". 要求实现函数: 复制代码 代码如下: void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); [输入] pInputStr:输入字符串lInputLen:输入字符串长度[输出]

php字符串压缩方法比较

php 提供的字符串压缩方法有 1.gzcompress - Compress a string This function compress the given string using the ZLIB data format. 2.gzencode - Create a gzip compressed string This function returns a compressed version of the input data  compatible with the output

C语言字符串原地压缩实现方法_C 语言

本文实例讲述了C语言字符串原地压缩的实现方法,对于学习字符串操作的算法设计有不错的借鉴价值.分享给大家供大家参考.具体方法如下: 字符串原地压缩示例: "eeeeeaaaff"压缩为"e5a3f2" 具体功能代码如下: /* * Copyright (c) 2011 alexingcool. All Rights Reserved. */ #include <iostream> #include <iterator> #include <