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. 去除重複字母力扣
- 【Leetcode每日一題】316. 去除重複字母(棧,貪心)LeetCode每日一題
- 去除重複字母(不同字元的最小序列)問題字元
- js去除重複字串JS字串
- JAVA 如何實現大文字去除重複行Java
- List中去除重複物件物件
- Java基礎之去除List集合中的重複元素Java
- mongodb如何去除重複資料MongoDB
- mongodb去除重複的資料MongoDB
- 測試去除重複資料
- [LeetCode] Remove Duplicates from Sorted Array 有序陣列中去除重複項LeetCodeREM陣列
- Java之ArrayList去除重複元素(包括字串和自定義物件)Java字串物件
- python中列表如何去除重複Python
- 使用HashSet<>去除重複元素的集合
- PHP陣列去除空白或重複元素PHP陣列
- 陣列去除重複的幾個方法陣列
- 利用excel去除txt文字中重複項Excel
- 如何去除 EXCEL 檔案中的重複行Excel
- 資料處理之去除重複資料
- 使用Oracle分析函式去除重複記錄Oracle函式
- mysql去除某些欄位重複的紀錄MySql
- 如何去除有序陣列中的重複元素陣列
- 正規表示式去除連續重複的字元字元
- php多維陣列去除重複值的方法PHP陣列
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- Python中去除重複資料的方法有哪些?Python
- js 的陣列去除重複元素程式碼例項JS陣列
- javascript去除陣列中重複元素程式碼例項JavaScript陣列
- 【原創】使用Oracle分析函式去除重複記錄Oracle函式
- 如何去除 Excel 2010 中的重複項Excel
- asp.net 之StringBuilder 去除重複資料ASP.NETUI
- LeetCode 242 有效的字母異位詞(JAVA)LeetCodeJava
- 好程式設計師分享HashSet實現去除重複元素程式設計師
- php資料庫資料如何去除重複資料呢?PHP資料庫
- UNIX下去除檔案中重複資料的方法(轉)
- LeetCode 存在重複元素之JavaScriptLeetCodeJavaScript