压缩字符串
❶ 字符串解压缩
刚才编成了压缩的程序,不好意思,现在的可以解压了。
程序没有给你编写读写文件的内容,文件读写自已去编,那个相对就简单了,程序只介绍了实现基本功能的内容。你可以输入3A4B7D测试。
void
main()
{int
m=0;int
j=0;
//string
a;
//char
c[111];
char
a[111];
char
b[111];
scanf("%s",a);
for(int
i=0;a[i]!='\0';i++)
{
cout<<"a"<
1&&a[i]-'0'<9)
{
m=a[i]-'0';}
else{b[j]=a[i];j++;}
while(m>1)
{
b[j]=a[i+1];
j++;
m--;
}
}
cout<
评论
0
0
0
加载更多
❷ c语言字符串如何压缩
话说B数组不应该是整形呀,不然不能保存字母了。以下是我的代码。。。
#include<iostream>
#include<string.h>
#include<stdio.h>
usingnamespacestd;
voidyasuo(chara[],charb[])
{
intcount=1,p=0;
for(inti=0;i<strlen(a);i++)
if(a[i]==a[i+1])
count++;
elseif(count>2)
{
b[p++]=(char)(count+'0');
b[p++]=a[i];
count=1;
}
elseif(count==2)
{
b[p++]=a[i];
b[p++]=a[i];
count=1;
}
else
b[p++]=a[i];
}
voidprintB(charb[])
{
cout<<b<<endl;
}
voidbackB(charb[])
{
for(inti=0;i<strlen(b);i++)
if(b[i]<='9'&&b[i]>='3')
{
for(intj=0;j<(int)(b[i]-'0');j++)
cout<<b[i+1];
i++;
}
else
cout<<b[i];
cout<<endl;
}
intmain()
{
chara[1000]={0},b[1000]={0};
gets(a);
yasuo(a,b);
printB(b);
backB(b);
}
❸ 字符串压缩 C#
唔.0 分,给你提示好了。
首先不推荐压缩字符串,基于“时间换空间”或者“空间换时间”的程序设计定律,相对压缩后得到的内存空间,浪费的CPU开销比较起来得不偿失。尤其是string这一特殊引用类型。
硬要体验的话,可以尝试使用Encoding,将字符串转换为byte流,对byte流压缩后保存。
❹ 压缩字符串
#include<stdio.h>
int compress(char s[])
{
int n,k=0,count=0;
if(s[0]!=NULL)n=k+1;
while(s[n]!=NULL)
{
if(s[k]==s[n])
{n++;count++;}
else{s[++k]=s[n];n++;}
}
s[++k]='\0';
return count;
}
main()
{char num[100];
int count=0;
FILE *fp;
fp=fopen("e:\\12\\myf3.out","w");
gets(num);
count=compress(num);
fprintf(fp,"%s",num);
printf("%d",count);
fclose(fp);}
是不是还要输学号啊#109
❺ 用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();
}
}
❻ c++怎么压缩字符串
一个个读入字符,记住当前一个和上一个
如果当前和上一个相同,计数加一
不同那么把上一个和计数放入结果字符串,上一字符值替换成当前,计数设置为1
接收到换行或者eof时结束程序并输出
❼ 字符串如何压缩
去网上搜索免费代码,这年代还自己写通用代码,又浪费时间又浪费精力————前提,别拿别人的免费代码做商业用途。
❽ js Gzip前台压缩字符串如何实现
public class Trans {
public void printNum(int num){
System.out.print(Thread.currentThread());//获取当前运行这个方法的类
for(int i=0;i<25;i++){
System.out.print(i+" ");
}
System.out.println();
}
}
❾ linux压缩字尾字符串是什么
能说清楚点么
❿ 使用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]='