天天看點

Java字元串壓縮 | 字元串壓縮。利用字元重複出現的次數,編寫一種方法,實作基本的字元串壓縮功能。比如,字元串aabcccccaaa會變為a2b1c5a3。若“壓縮”後的字元串沒有變短,則傳回原先的

字元串壓縮

字元串壓縮。利用字元重複出現的次數,編寫一種方法,實作基本的字元串壓縮功能。比如,字元串

aabcccccaaa

會變為

a2b1c5a3

。若“壓縮”後的字元串沒有變短,則傳回原先的字元串。你可以假設字元串中隻包含大小寫英文字母(a至z)。

示例1:

輸入:"aabcccccaaa"
 輸出:"a2b1c5a3"
           

示例2:

輸入:"abbccd"
 輸出:"abbccd"
 解釋:"abbccd"壓縮後為"a1b2c2d1",比原字元串長度更長。
           

提示:

  1. 字元串長度在[0, 50000]範圍内。

Java題解

第一行代碼說明一下,力扣官方的參數是一個大寫S,看着實在變扭換成小寫的了而已,沒有實際意義。

後面就是通過逐個比較并記錄實作的。

public static String compressString(String S) {
        String s = S;
        StringBuilder sb = new StringBuilder();
        int num = 0;
        Character last = null;
        for (char b : s.toCharArray()) {
            if(last == null){
                last = b;
            }
            if(last == b){
                num++;
            }else{
                sb.append(last).append(num);
                num = 1;
                last = b;
            }
        }
        sb.append(last).append(num);
        return sb.length() >= s.length() ? s : sb.toString();
}