java字符压缩
① 输入一串小写字母(a-z)组成的字符串,将连续字母压缩输出字符串,用java实现
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();/咐并/dasdascasd
char[] chars = str.toCharArray();
char c = 0;
int j = 1;
for (int i = 0; i < chars.length; i++) {
char b = chars[i];
if (c!=b) {
if (j!=1) {
System.out.print(j);
}
System.out.print(c);
j = 1;/银链/初始化锋简孙j
}else{
j = j + 1;
}
c = b;
}
System.out.println(chars[chars.length-1]);
}
② 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如何将很长的字符串存储为压缩文件
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,如何将字符串"12345678901212345678"压缩一下,使输出结果变短,并能反向解析
1. 可以考虑引入字符A~Z,加上0~9,形成36进制(更进一步可以大小写敏感,加上a~z,形成62进制);
2. 将上述字符串缓春败 除以36 取余;作为个位数;上述字符串 除以36 取整,作为结果,重复本步取余计算。
3. 获得结果。
4. 反向解析,将扰颤上述结果,分别按位数 乘以 36 ;
5. 最后合并相加,获得原森侍字符串。
⑥ 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(); } }}
⑦ java字符串经过bcd压缩后怎么传输
解决方法:
据我所知,您目前的做法是:
>使用getBytes(“UTF-8”)将String转换为字节数组.
>压缩字节数组
>使用新的String(字节,…,“UTF-8”)将压缩字节数组转换为String.
>传输压缩字符串
>接收压缩字符串
>使用getBytes(“UTF-8”)将压缩字符串转换为字节数组.
>解压缩字节数组
>使用新的String(bytes,…,“UTF-8”)将解压缩的字节数组转换为String.
这种方法的问题在于步骤3.压缩字节数组时,您创建的字节序列可能不再是没汪有效的UTF-8.结果将是步骤3中的例外.
解决方案是使用像Base64这样的“字节到字符”编码方案将压缩字节转换为可传输的字符串.换句话说,用调用Base64编码函数代替步骤3,用调用Base64解码函数代替步骤6.
笔记:
>对于小弦,压缩和
编码很可能实际上
增加传输字符串的大小.
>如果要将压缩的字符串合并到URL中,您可能希望为Base64选择不同的编码,以避免兆察缓需要进行URL转义的字符.
>根据您传输的数据的性质,您可能会发现特定于域的压缩比通用压缩更好.考虑在创建以逗号分隔的字符串之前压缩数据.考虑以逗号分隔的字符串的族模替代方法.
⑧ Java 字符串压缩与解压
给你提供个思想
首先你这不是物理上的压缩,也就是说它是一个逻辑上的我们认同上的压缩。
你需要写一个算法来对你所要处理的数据进行统计,然后按照算法来改变结果。
最后达到一个后台的虚拟压缩(实际上不是压缩,只是算法)。