❶ 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]='