导航:首页 > 文件处理 > 类字符串压缩

类字符串压缩

发布时间:2023-09-13 03:08:21

❶ c++怎么压缩字符串

一个个读入字符,记住当前一个和上一个
如果当前和上一个相同,计数加一
不同那么把上一个和计数放入结果字符串,上一字符值替换成当前,计数设置为1
接收到换行或者eof时结束程序并输出

❷ 用java如何实现压缩字符串

package javase1.day02;
/**
* 1)一种字符串压缩算法
* str ="aaaabbccccddeaaa"
* 压缩为:"4a2b4c2d1e3a"
* 原理实现:
* str = "aaaabbccccddeaaa"
*
* c = str.charAt(i)//c是每个字符
* 1) 初始化
* StringBuilder buf = new StringBuilder();
* int count = 0;代表相同的字符个数
* char ch = str.charAt(0);代表正在统计的相同字符'a'
* 2) 从i=1开始迭代每个字符
* c = str.charAt(i);//c是每个当前字符
* 3) 检查当前字符c与被统计ch是否一致
* 如果一致 count++
* 否则(不一致)
* 向缓冲区buf增加count+ch
* count=0,ch=c;
* 3)没有下个字符就结束
* 4)还有字符串吗?回到2)
*
* 2)实现还原算法
* str = "4a2b4c2d1e3a";
* i
*/
public class Demo5 {
public static void main(String[] args) {
String s = comp("aaaawwwwe");
System.out.println(s);
// System.out.println(decomp(s));

}
public static String comp(String str){
int i = 1;
StringBuilder buf = new StringBuilder();
int count = 1;
char ch = str.charAt(0);
for(;;){
char c = i==str.length() ? '\10':str.charAt(i);
if(c==ch){
count++;
}else{
if(count == 1)
buf.append(ch);
else
buf.append(count).append(ch);
count=1;
ch = c;
}
i++;
if(i==str.length()+1){
break;
}
}
return buf.toString();

}
}

❸ java 字符串加密 加密结果的长度如何压缩

1. 可以考虑引入字符A~Z,加上0~9,形成36进制(更进一步可以大小写敏感,加上a~z,形成62进制);
2. 将上述字符串 除以36 取余;作为个位数;上述字符串 除以36 取整,作为结果,重复本步取余计算。
3. 获得结果。

4. 反向解析,将上述结果,分别按位数 乘以 36 ;
5. 最后合并相加,获得原字符串。

❹ 字符串压缩 C#

唔.0 分,给你提示好了。

首先不推荐压缩字符串,基于“时间换空间”或者“空间换时间”的程序设计定律,相对压缩后得到的内存空间,浪费的CPU开销比较起来得不偿失。尤其是string这一特殊引用类型。

硬要体验的话,可以尝试使用Encoding,将字符串转换为byte流,对byte流压缩后保存。

❺ C#string类型压缩,最低能压缩多少

string能够压缩多少,要看具体它携带的信息。
比如string s = new string('x', 10000000)一千万个字符,由于信息量少,可以压缩为几个字节。
而一个信息量大的串,比如100个随即字符的串,可能都压缩不了。

从信息理论上说,一定有东西是压缩不了的。

抽屉原理告诉我们,3个苹果放入2个抽屉,一定有抽屉要放一个以上的苹果。
100个字节,所有的组合有2的800次方那么多。
而101个字节的组合,有2的808次方那么多,这些组合是不能放入100个字节的抽屉而不重复的。
也就是说,某些数据是不能被压缩的,哪怕是只压缩一个字节也办不到。

❻ 使用C语言实现字符串的压缩。

/*
原串:111225555
压缩后:312245
原串:333AAAbbbb
压缩后:333A4b
原串:ASXDCdddddd
压缩后:1A1S1X1D1C6d
Pressanykeytocontinue
*/
#include<stdio.h>
#include<string.h>

char*CompressStr(chars[]){
chart[255];
inti=0,j,k=0;
while(s[i]){
j=i+1;
while(s[i]==s[j])++j;
t[k++]=j-i+'0';
t[k++]=s[i];
i=j;
}
t[k]='';
strcpy(s,t);
returns;
}

intmain(void){
chari,s[][20]={"111225555","333AAAbbbb","ASXDCdddddd"};
for(i=0;i<3;++i){
printf("原串:%s ",s[i]);
printf("压缩后:%s ",CompressStr(s[i]));
}
return0;
}

阅读全文

与类字符串压缩相关的资料

热点内容
r1234yf汽车空调压缩机 浏览:143
ftp服务器地址栏 浏览:898
linux图形分区 浏览:963
安徽到辽宁源码 浏览:575
libs安卓的文件夹叫什么 浏览:869
生意圈app是什么意思 浏览:395
linuxarcgisserver 浏览:234
加密pdf怎么修改文件 浏览:138
红米刷机无命令怎么办 浏览:356
啥叫美国谷歌外包程序员 浏览:260
云服务器管家婆 浏览:440
发邮件命令 浏览:354
程序员好做吗工作好吗 浏览:886
云电脑服务器维护一个月多少钱 浏览:882
有没有什么app数学题型较多 浏览:341
政策pdf 浏览:295
有什么好玩的文娱app 浏览:811
python教学合集 浏览:959
有什么好用的小众app吗 浏览:118
芋道app源码 浏览:448