題目連結:
題目意譯:
給定一字串 s,其由大小寫英文字母組成。
一個「好」字串為一字串,而當中不存在著兩個相鄰字元 s[i] 和 s[i + 1],其中:
0 ≦ i ≦ s.length - 2
s[i] 為一個小寫字母而 s[i + 1] 為同一個字母的大寫型態;或是兩者情況反過來。
為了使字串變好,你可以選擇讓字串不好的兩個相鄰字元並移除它們。你可以持續做這件事情直到字串變好為止。
將該字串變好之後回傳。在給定的限制條件下保證答案唯一。
注意到一個空字串也是好字串。
限制:
1 ≦ s.length ≦ 100
s 只由大小寫英文字母組成。
範例測資:
範例 1:
輸入: s = "leEeetcode"
輸出: "leetcode"
解釋: 在第一步中,你可以要嘛選擇 i = 1 要嘛選擇 i = 2,兩者都會將 "leEeetcode" 變成 "leetcode"。
範例 2:
輸入: s = "abBAcC"
輸出: ""
解釋: 我們有很多可能的情況,而每一個都會得到相同的答案。例如:
"abBAcC" --> "aAcC" --> "cC" --> ""
"abBAcC" --> "abBA" --> "aA" --> ""
範例 3:
輸入: s = "s"
輸出: "s"
解題思維:
因為題目保證答案唯一,再加上字串的長度最長也只有 100 個字元。因此我們可以直接一直掃過該字串,找找看有沒有不符合條件的兩個相鄰字母並刪除即可。當沒有這樣子的相鄰字元時,即代表著該字串變好了,因此此時直接回傳該字串剩下的內容即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。