手机
当前位置:查字典教程网 >编程开发 >Java >使用游长编码对字符串压缩 Run Length编码示例
使用游长编码对字符串压缩 Run Length编码示例
摘要:例:Helloooooo=>He2l6o复制代码代码如下:/***Run-Length编码(游长编码)*@authorwill**/publ...

例:Helloooooo => He2l6o

复制代码 代码如下:

/**

* Run-Length编码(游长编码)

* @author will

*

*/

public class RunLengthEncoder {

public static void main(String[] args) {

String input = "0";

System.out.println("Original String Length: " + input.length());

String encodedStr = encode(input);

System.out.println("Encoded String: " + encodedStr);

System.out.println("Encoded String Length: " + encodedStr.length());

String decodedStr = decode(encodedStr);

System.out.println("Decoded String: " + decodedStr);

}

/**

* 用Run-Length算法编码字符串

* @param sourceStr 原始字符串

* @return

*/

public static String encode(String sourceStr) {

if(sourceStr == null || sourceStr.length() <= 1) {

return sourceStr;

}

int len = sourceStr.length();

StringBuilder resultBuilder = new StringBuilder();

for(int i = 0; i < len; i++) {

char cur = sourceStr.charAt(i);

int runLength = 1;

while((i+1) < len && sourceStr.charAt(i+1) == cur) {

i++;

runLength++;

}

if(runLength > 1) {

resultBuilder.append(runLength + "" + cur);

}

else {

resultBuilder.append(cur);

}

}

return resultBuilder.toString();

}

/**

* 解码Run-Length编码的字符串

* @param encodedStr

* @return

*/

public static String decode(String encodedStr) {

if(encodedStr == null || encodedStr.length() <= 1) {

return encodedStr;

}

int len = encodedStr.length();

StringBuilder resultBuilder = new StringBuilder();

for(int i = 0; i < len; i++) {

char curChar = encodedStr.charAt(i);

if(Character.isDigit(curChar)) {

i++;

char nextChar = encodedStr.charAt(i);

int runLength = Integer.parseInt(curChar + "");

for(int j = 0; j < runLength; j++) {

resultBuilder.append(nextChar);

}

}

else {

resultBuilder.append(curChar);

}

}

return resultBuilder.toString();

}

}

【使用游长编码对字符串压缩 Run Length编码示例】相关文章:

java 学习笔记(入门篇)_java的基础语法

各种格式的编码解码工具类分享(hex解码 base64编码)

在java中使用dom解析xml的示例分析

java使用数组和链表实现队列示例

Java反转字符串和相关字符编码的问题解决

使用jdk7的nio2操作文件拷贝和剪切示例

java使用dom4j解析xml配置文件实现抽象工厂反射示例

java中使用DES加密解密实例

java使用rmi传输大文件示例分享

java生成压缩文件示例代码

精品推荐
分类导航