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(); } }}