1. 程式人生 > >【5】基本字符串壓縮

【5】基本字符串壓縮

stringbu 字符串 n) nbsp ret map ++ clas ipp

【題目】

利用字符重復出現的次數,編寫一個方法,實現基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字符串沒有變短,則返回原先的字符串。
給定一個string iniString為待壓縮的串(長度小於等於10000),保證串內字符均由大小寫英文字母組成,返回一個string,為所求的壓縮後或未變化的串。
測試樣例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr

【代碼】

import java.util.*;

public class
Zipper { public String zipString(String iniString) { if(iniString == null || iniString.length() <= 0){ return iniString; } Map<Character,Integer> map = new HashMap<>(); int len = iniString.length(); StringBuilder sb
= new StringBuilder(len); int count = 0; int index1 = 0; int index2 = 1; for(int i = 0; i < len; i++){ if(index2 < len && (iniString.charAt(index1) == iniString.charAt(index2))){ index2++; }else{ count
= index2 - index1; sb.append(iniString.charAt(index1)).append(count); index1 = index2; index2 = index1 + 1; } } if(sb.length() >= len){ return iniString; } return sb.toString(); } }

【5】基本字符串壓縮