leetcode 316.去除重複字母 Java
題目連結
https://leetcode-cn.com/problems/remove-duplicate-letters/
描述
給你一個字串 s ,請你去除字串中重複的字母,使得每個字母只出現一次。需保證 返回結果的字典序最小(要求不能打亂其他字元的相對位置)。
注意:該題與 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同
提示:
1 <= s.length <= 104
s 由小寫英文字母組成
示例
示例 1:
輸入:s = "bcabc"
輸出:"abc"
示例 2:
輸入:s = "cbacdcbc"
輸出:"acdb"
初始程式碼模板
class Solution {
public String removeDuplicateLetters(String s) {
}
}
程式碼
推薦題解:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/dan-tiao-zhan-qu-zhong
注意題目的三個點就好:
1.去重
2.保留相對位置
3.滿足前兩個條件的情況下字典序最小
class Solution {
public String removeDuplicateLetters(String s) {
LinkedList<Character> stack = new LinkedList<>();
int[] count = new int[256];
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i)]++;
}
boolean[] inStack = new boolean[256];
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
count[c]--;
if (inStack[c]) continue;
while (!stack.isEmpty() && stack.peek() > c) {
if (count[stack.peek()] == 0) {
break;
}
inStack[stack.pop()] = false;
}
stack.push(c);
inStack[c] = true;
}
StringBuilder sbu = new StringBuilder();
while (!stack.isEmpty()) {
sbu.append(stack.pop());
}
return sbu.reverse().toString();
}
}
相關文章
- [Leetcode]316.去除重複字母LeetCode
- LeetCode 316. 去除重複字母 java題解LeetCodeJava
- 316. 去除重複字母
- 力扣-316. 去除重複字母力扣
- 【Leetcode每日一題】316. 去除重複字母(棧,貪心)LeetCode每日一題
- 去除重複字母(不同字元的最小序列)問題字元
- JAVA 如何實現大文字去除重複行Java
- List中去除重複物件物件
- Java基礎之去除List集合中的重複元素Java
- python中列表如何去除重複Python
- mongodb如何去除重複資料MongoDB
- Java之ArrayList去除重複元素(包括字串和自定義物件)Java字串物件
- 去除DataTable指定列的重複行
- NPP++去除文字中的重複行
- 大文字如何按行去除重複值
- 陣列去除重複的幾個方法陣列
- PHP陣列去除空白或重複元素PHP陣列
- LeetCode-containsDuplicate-存在重複LeetCodeAI
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- 如何去除 EXCEL 檔案中的重複行Excel
- 資料處理之去除重複資料
- 如何去除有序陣列中的重複元素陣列
- sqlserver根據條件去除重複資料SQLServer
- LeetCode 242 有效的字母異位詞(JAVA)LeetCodeJava
- LeetCode 存在重複元素之JavaScriptLeetCodeJavaScript
- 正規表示式去除連續重複的字元字元
- Python中去除重複資料的方法有哪些?Python
- php多維陣列去除重複值的方法PHP陣列
- 去除類似AB和BA這樣的重複行
- leetcode 287 尋找重複的數LeetCode
- LeetCode26、27 刪重複元素LeetCode
- LeetCode-187-重複的DNA序列LeetCode
- LeetCode-459-重複的子字串LeetCode字串
- 好程式設計師分享HashSet實現去除重複元素程式設計師
- Python連線兩個字串並去除首尾重複子串Python字串
- php資料庫資料如何去除重複資料呢?PHP資料庫
- PHP二維陣列切割為字串並去除重複的值PHP陣列字串
- LeetCode C++ 316. Remove Duplicate Letters【Stack/Greedy/String】中等LeetCodeC++REM