国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

使用游長編碼對字符串壓縮 Run Length編碼示例

2019-11-26 15:43:36
字體:
來源:轉載
供稿:網友

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

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 社会| 安庆市| 石门县| 城步| 济阳县| 庆元县| 文成县| 五大连池市| 章丘市| 墨竹工卡县| 虎林市| 平塘县| 宝应县| 合水县| 布尔津县| 三亚市| 治县。| 颍上县| 长汀县| 墨竹工卡县| 桂东县| 行唐县| 绥阳县| 柘荣县| 海口市| 新干县| 河南省| 大关县| 桂平市| 富蕴县| 惠安县| 泗洪县| 扎赉特旗| 高唐县| 河源市| 嘉兴市| 湘阴县| 峨山| 获嘉县| 印江| 香河县|