導航:首頁 > 文件處理 > 類字元串壓縮

類字元串壓縮

發布時間: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;
}

閱讀全文

與類字元串壓縮相關的資料

熱點內容
什麼是金稅盤伺服器 瀏覽:434
phpsocket開發 瀏覽:507
caj文檔轉pdf 瀏覽:550
eclipsemaven命令配置 瀏覽:335
雅安視監控app叫什麼名字 瀏覽:729
東方財富app籌碼藍色和紅色是什麼 瀏覽:564
pr安裝文件夾圖標變白 瀏覽:177
如何用伺服器建設網站 瀏覽:347
定時鬧鍾單片機課程設計 瀏覽:537
腰椎壓縮性骨折症狀 瀏覽:466
絕地求生全軍出擊的伺服器什麼時候開 瀏覽:492
怎麼入侵游戲伺服器篡改數據 瀏覽:736
線性壓縮機原理 瀏覽:543
javanewinstance 瀏覽:817
程序員第一玄學 瀏覽:499
精品源碼怎麼算 瀏覽:493
加密技術在現實中應用體會 瀏覽:182
單片機如何換晶振 瀏覽:208
合並兩個數組java 瀏覽:15
命令標注圓半徑怎麼用 瀏覽:662