利用字符重復出現的次數,編寫一個方法,實現基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮后的字符串沒有變短,則返回原先的字符串。
給定一個string iniString為待壓縮的串(長度小於等於10000),保證串內字符均由大小寫英文字母組成,返回一個string,為所求的壓縮后或未變化的串。
測試樣例
“aabcccccaaa”
返回:”a2b1c5a3”
“welcometonowcoderrrrr”
返回:”welcometonowcoderrrrr”
public String compressStr(String srcStr){ if(srcStr == null){ return null; } StringBuilder sb = new StringBuilder(); int length = srcStr.length(); char c1 = srcStr.charAt(0); int sum = 1; for (int i = 1; i < length;i++){ char c2 = srcStr.charAt(i); if (c1 == c2){ sum++; continue; } if (sum > 1){ sb.append(c1).append(sum); }else { sb.append(c1); } c1 = c2; sum = 1; } // 處理最后一個字符 if(sum>1){ sb.append(c1).append(sum); }else{ sb.append(c1); } return sb.toString(); }