領釦LintCode演算法問題答案-1214. 許可證金鑰格式

二當家的白帽子發表於2020-10-03

領釦LintCode演算法問題答案-1214. 許可證金鑰格式

1214. 許可證金鑰格式

描述

給定一個用字串S表示的許可證,其中僅僅包含了數字、字母和短橫線。字串被N個短橫線“-”切分為了N+1組。

給定一個數字K,要求重新整理字串的格式,使得除了第一組之外的每個組正好K個字元,第一組長度可以比K小,但也至少要包含一個字元。此外,對於兩個組之間必須要插入一個短橫線,所有的小寫字母都要轉換為大寫字母。

  • 字串S的長度不會超過12000,而且K是一個正整數。
  • 字串S僅僅包含大小寫字母、數字和短橫線“-”。
  • 字串S非空。

樣例 1:

輸入: S = "5F3Z-2e-9-w", K = 4
輸出: "5F3Z-2E9W"
解釋: 字串S切分為兩個部分, 每個部分有4個字元。
注意原串中兩個額外的橫線是多餘的,可以刪掉。

樣例 2:

輸入: S = "2-5g-3-J", K = 2
輸出: "2-5G-3J"
解釋: 字串S切分為了三部分, 每個部分有兩個字元,除了第一個部分,因為如原題所述,第一部分長度只有1。

題解

public class Solution {
    /**
     * @param S: a string
     * @param K: a integer
     * @return: return a string
     */
    public String licenseKeyFormatting(String S, int K) {
        // write your code here
        StringBuilder sb = new StringBuilder();
        int length = 0;
        for (int i = S.length() - 1; i >= 0; i--) {
            char c = S.charAt(i);
            if (c != '-') {
                if (length >= K) {
                    sb.append("-");
                    length = 0;
                }
                sb.append(Character.toUpperCase(c));
                length++;
            }
        }
        return sb.reverse().toString();
    }
}

原題連結點這裡

鳴謝

非常感謝你願意花時間閱讀本文章,本人水平有限,如果有什麼說的不對的地方,請指正。
歡迎各位留言討論,希望小夥伴們都能每天進步一點點。

相關文章