問題背景
給你一個下標從 0 0 0 開始的字符串 s s s,重復執行下述操作 任意 次:
- 在字符串中選出一個下標 i i i,并使 c c c 為字符串下標 i i i 處的字符。并在 i i i 左側(如果有)和 右側(如果有)各 刪除 一個距離 i i i 最近 的字符 c c c。
請你通過執行上述操作任意次,使 s s s 的長度 最小化 。
返回一個表示 最小化 字符串的長度的整數。
數據約束
- 1 ≤ s . l e n g t h ≤ 100 1 \le s.length \le 100 1≤s.length≤100
- s s s 僅由小寫英文字母組成
解題過程
閱讀理解題,要注意的是描述說的是左側和右側,沒有要求相鄰,實際上就是要求去重。
用哈希表沒什么難度,用位運算練習一下模擬集合操作。
具體實現
class Solution {public int minimizedStringLength(String s) {int mask = 0;for (char c : s.toCharArray()) {mask |= 1 << (c - 'a');}return Integer.bitCount(mask);}
}