java,如何將字元串"12345678901212345678"壓縮一下,使輸出結果變短,並能反向解析

1. 可以考慮引抄入字元襲A~Z,加上0~9,形成36進制(更進一步可以大小寫敏感,加上a~z,形成62進制);
2. 將上述字元串 除以36 取余;作為個位數;上述字元串 除以36 取整,作為結果,重復本步取余計算。
3. 獲得結果。

4. 反向解析,將上述結果,分別按位數 乘以 36 ;
5. 最後合並相加,獲得原字元串。

❷ 用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,把字元竄壓縮成十六進制,並且壓縮一半

12345678910111213141516171819小豬,已解答,點贊即可publicclassRectangle{publicstaticvoidmain(String[]args){StringS1="0412134FFFFFFFFFF";StringT1="00007770000200";longsi=Long.parseLong(S1,16);longti=Long.parseLong(T1);longst=si^//很顯然是十進制0~9//4693090553043039415System.out.println(st);Stringhex=Long.toHexString(st);//412134fe30df34b7System.out.println(hex);}}

追問

按照異或的演算法版,首位0和0異或的結果權不是應該是0嗎?為什麼算出來後結果的第一位是4?還是說內部執行的機制不是這樣的?求教,謝謝

❹ Java編寫方法實現字元串壓縮的功能,連續的 n 個字元 x 表示為 xn,例如 aaaa 表示為a4,

packagedemo1;

publicclassDemo2{
publicstaticStringreceString(finalStringstr){
StringBufferresult=newStringBuffer();
finalintcount=str.length();
charc1=str.charAt(0);
intsum=1;
for(inti=1;i<count;i++){
charc2=str.charAt(i);
if(c1==c2)
{
sum++;
continue;
}
result.append(c1).append(sum);
c1=c2;
sum=1;
}
result.append(sum).append(c1);
returnresult.toString();
}
publicstaticvoidmain(String[]args){
System.out.println(receString("aaaaaaaabbbccdddeeebbba"));
}
}

❺ java怎樣壓縮base64編碼的字元串

是生成了base64字元串,要壓縮 ? 那可以使用zip輸出流去壓縮

~~~~~

❻ Java 字元串壓縮與解壓

public class Demo {
public static void main(String[] args) {
change();
change2();
}

private static void change() {
String str = "AAAbbbcc111NNNnn";
StringBuffer result = new StringBuffer();

char oldChar = 'z';
int count = 1;
for (int i = 0; i < str.length(); i++) {
if (i == 0) {
oldChar = str.charAt(i);
} else if (i == (str.length() - 1)) {
++count;
result.append(oldChar + "" + count);
} else if (str.charAt(i) == oldChar) {
++count;
} else {
result.append(oldChar + "" + count);
count = 1;
oldChar = str.charAt(i);
}
}
System.out.println(str + " 轉成了 " + result);
}

private static void change2() {
String str = "A3b3c213N3n2";
StringBuffer result = new StringBuffer();

char oldChar = 'z';
try {
for (int i = 0; i < str.length(); i++) {
if (i % 2 == 0) {
oldChar = str.charAt(i);
} else {
int count = Integer.parseInt(str.substring(i, i + 1));
for (int j = 0; j < count; j++)
result.append(oldChar);
}
}
} catch (Exception e) {
System.err.println("格式異常...");
return;
}
System.out.println(str + " 轉成了 " + result);
}
}

❼ java如何將很長的字元串存儲為壓縮文件

String str = ""; int length = str.length(); List<Integer> index = new ArrayList<Integer>(); for (int i = 0; i < length - 1; i++) { if(str.charAt(i) != str.charAt(i + 1)){ index.add(i); } } if(str.charAt(length - 2) != str.charAt(length - 1)){ index.add(length - 1); } int start = 0; StringBuffer result = new StringBuffer(); for (int i = 0; i < index.size(); i++) { int end = index.get(i) + 1; if(i != 0){ start = index.get(i - 1) + 1; } String temp = str.substring(start, end); result.append(temp.charAt(0)).append(end - start); } System.out.println(result.toString());最終結果是:a6s4c5d7w1s1a3s1d1c1a1s1

❽ 用Java 編程 如何將 字元串原地壓縮。

對字元做累加,如果遇到相同字元則加1,否則輸出累加的數

❾ java 實現對字元串進行GSM(7bit)壓縮編碼後HEX 字元串輸出

JAVA有一個public String(byte bytes[], Charset charset)函數可以用指定位元組數組和編碼來構造字元串。一個public byte[] getBytes(Charset charset)函數把字元串按指定編碼來得到位元組數組。可以用這兩個函數來實現編碼轉換。
下面是一個簡單的例子,注意一下例子中的文字本身的編碼,最好在自己的環境中用gb2312重新輸入,不然可能是亂碼。當然轉換後輸出肯定有一個是亂碼,也肯能都是亂碼。根據你的編輯器的編碼格式有關。
public class EncodingTest{ public static void main(String[] args) { try { String gb = new String("國標2312".getBytes(),"gb2312"); System.out.println(gb); byte [] b = gb.getBytes("gb2312"); String ios = new String(b,"ISO-8859-1"); System.out.println(ios); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } }}