debug中...
public String removeDuplicateLetters(String s) {
//1.去掉重复字母做准备,存储记录字符数量。
int[] arr = new int[26];
for (char c : s.toCharArray()) {
arr[c - 'a']++;
}
//StringBuilder ans=new StringBuilder(26);
Stack<Character> ans = new Stack<>();//用队列也可
boolean[] inAns = new boolean[26];
for (char c : s.toCharArray()) {
arr[c - 'a']--;
if (ans.isEmpty() || arr[c - 'a'] == 0) {
ans.push(c);
inAns[c - 'a'] = true;
}
if (inAns[c - 'a']) {
continue;
}
char ch = ans.peek();
//注意这应该是while
// 输入:s = "cbacdcbc"
//输出:"acdb"
if (c < ch && arr[ch - 'a'] > 0) {
inAns[ch - 'a'] = false;
ans.pop();
}
ans.push(c);
inAns[c - 'a'] = true;
}
StringBuilder str=new StringBuilder();
while (!ans.isEmpty()){
str.append(ans.pop());
}
return str.reverse().toString();
}
chatgpt修复后: