JAVA字符串写入文件再压缩(java字符串压缩算法)

Java 字符串压缩与解压

给你提供个思想

首先你这不是物理上的告芹压缩,也就是说袜袜毕它是一个逻辑上的我们好禅认同上的压缩。

你需要写一个算法来对你所要处理的数据进行统计,然后按照算法来改变结果。

最后达到一个后台的虚拟压缩(实际上不是压缩,只是算法)。

用java如何实现压缩字符串?

package javase1.day02;\x0d\x0a /**\x0d\x0a * 1)一种字符串压缩算法\x0d\x0a * str ="aaaabbccccddeaaa"\x0d\x0a * 压缩为:"4a2b4c2d1e3a"\x0d\x0a * 原理实现:\x0d\x0a * str = "aaaabbccccddeaaa"\x0d\x0a * \x0d\x0a * c = str.charAt(i)//c是每个字符\x0d\x0a * 1) 初始化拆中\x0d\x0a * StringBuilder buf = new StringBuilder();\x0d\x0a * int count = 0;代表相同的字符个数\x0d\x0a * char ch = str.charAt(0);代表正在统计的相同字符'a' \x0d\x0a * 2) 从i=1开始迭代每个字符\x0d\x0a * c = str.charAt(i);//c是每个兄拍当前字符\x0d\x0a * 3) 检查当前字符c与羡御羡被统计ch是否一致\x0d\x0a * 如果一致 count++\x0d\x0a * 否则(不一致)\x0d\x0a * 向缓冲区buf增加count+ch\x0d\x0a * count=0,ch=c;\x0d\x0a * 3)没有下个字符就结束\x0d\x0a * 4)还有字符串吗?回到2)\x0d\x0a * \x0d\x0a * 2)实现还原算法\x0d\x0a * str = "4a2b4c2d1e3a";\x0d\x0a * i\x0d\x0a */\x0d\x0apublic class Demo5 {\x0d\x0a public static void main(String[] args) {\x0d\x0a String s = comp("aaaawwwwe");\x0d\x0a System.out.println(s);\x0d\x0a// System.out.println(decomp(s));\x0d\x0a \x0d\x0a }\x0d\x0a public static String comp(String str){\x0d\x0a int i = 1;\x0d\x0a StringBuilder buf = new StringBuilder();\x0d\x0a int count = 1;\x0d\x0a char ch = str.charAt(0);\x0d\x0a for(;;){\x0d\x0a char c = i==str.length() ? '\10':str.charAt(i);\x0d\x0a if(c==ch){\x0d\x0a count++;\x0d\x0a }else{\x0d\x0a if(count == 1)\x0d\x0a buf.append(ch);\x0d\x0a else \x0d\x0a buf.append(count).append(ch);\x0d\x0a count=1;\x0d\x0a ch = c;\x0d\x0a } \x0d\x0a i++;\x0d\x0a if(i==str.length()+1){\x0d\x0a break;\x0d\x0a } \x0d\x0a }\x0d\x0a return buf.toString();\x0d\x0a \x0d\x0a }\x0d\x0a}

java 字符串加密 加密结果的长度如何压缩

1. 可以考虑引入字符A~Z,加上0~9,形成36进制(更进一步可以大小写敏感扰颤,加上a~z,形成62进制);

2. 将上述字符串 除以36 取余;作为个位数;上述字符串 除以36 取整,作为结果缓春败,重复本步森侍取余计算。

3. 获得结果。

4. 反向解析,将上述结果,分别按位数 乘以 36 ;

5. 最后合并相加,获得原字符串。

java如何将很长的字符串存储为压缩文件

String str = "aaaaaasssscccccdddddddwsaaasdcas"; int length = str.length(); List弯迹Integer index = new ArrayListInteger隐闹乱(); 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字符串写入文件再压缩(java字符串压缩算法)  第1张

Java编写方法实现字符串压缩的功能,连续的 n 个字符 x 表示为 xn,例如 aaaa 表示为a4,

package demo1;

public class Demo2 逗雀慧 {  

    public static String reduceString(final String str) {  

        StringBuffer result = new StringBuffer();  

        final int count = str.length();  

        char 山答c1 = str.charAt(0);  

        int sum = 1;  

        for (int i = 1; i  count; i++)  {  

            char c2 = str.charAt(i);  

            if 岁没(c1 == c2)  

            {  

                sum++;  

                continue;  

            }  

            result.append(c1).append(sum);  

            c1 = c2;  

            sum = 1;  

        }  

        result.append(sum).append(c1);  

        return result.toString();  

    }  

    public static void main(String[] args)  {  

        System.out.println(reduceString("aaaaaaaabbbccdddeeebbba"));  

    }  

}

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 14:00
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论