⑴ 字元串如何壓縮
去網上搜索免費代碼,這年代還自己寫通用代碼,又浪費時間又浪費精力————前提,別拿別人的免費代碼做商業用途。
⑵ C#string類型壓縮,最低能壓縮多少
string能夠壓縮多少,要看具體它攜帶的信息。
比如string s = new string('x', 10000000)一千萬個字元,由於信息量少,可以壓縮為幾個位元組。
而一個信息量大的串,比如100個隨即字元的串,可能都壓縮不了。
從信息理論上說,一定有東西是壓縮不了的。
抽屜原理告訴我們,3個蘋果放入2個抽屜,一定有抽屜要放一個以上的蘋果。
100個位元組,所有的組合有2的800次方那麼多。
而101個位元組的組合,有2的808次方那麼多,這些組合是不能放入100個位元組的抽屜而不重復的。
也就是說,某些數據是不能被壓縮的,哪怕是只壓縮一個位元組也辦不到。
⑶ C語言求助:請編寫一個字元串壓縮程序,將字元串中連續出席的重復字母進行壓縮,並輸出壓縮後的字元串。
用下面的代碼給你提供個思路。這代碼連續字元不得超過9個……
#include "stdio.h"
void main(void){
char a[1000]="gcccddecc";
int i,j,k,n;
printf("Type an integer(a~z)...\nStr=");
gets(a);
for(k=i=0;a[i];i++){
for(j=i+1,n=0;a[i]==a[j];j++) n++;
if(n){
a[k++]=n+'1';
a[k++]=a[--j];
i+=n;
}
else a[k++]=a[i];
}
a[k]='\0';
printf("The result = %s.\n",a);
}
⑷ 壓縮字元串
#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
⑸ 如何對md5加密後的字元串進行壓縮
你這個壓縮有什麼需求嗎?你給的這段字元串其實用目前的壓縮演算法的話,基本上是不會減少你的字串的長度。你是需要知道具體的演算法呢,還是希望對MD5的結果有所改進。
⑹ 字元串解壓縮
剛才編成了壓縮的程序,不好意思,現在的可以解壓了。
程序沒有給你編寫讀寫文件的內容,文件讀寫自已去編,那個相對就簡單了,程序只介紹了實現基本功能的內容。你可以輸入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
載入更多
⑺ 用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語言實現字元串的壓縮。
/*
原串: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]='