【5】基本字符串壓縮
阿新 • • 發佈:2017-05-30
stringbu 字符串 n) nbsp ret map ++ clas ipp
【題目】
利用字符重復出現的次數,編寫一個方法,實現基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字符串沒有變短,則返回原先的字符串。 給定一個string iniString為待壓縮的串(長度小於等於10000),保證串內字符均由大小寫英文字母組成,返回一個string,為所求的壓縮後或未變化的串。 測試樣例 "aabcccccaaa" 返回:"a2b1c5a3" "welcometonowcoderrrrr" 返回:"welcometonowcoderrrrr
【代碼】
import java.util.*; public classZipper { 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】基本字符串壓縮