给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的
字典序
最小(要求不能打乱其他字符的相对位置)。
示例 1:
输入: s = "bcabc"
输出: "abc"
示例 2:
输入: s = "cbacdcbc"
输出: "acdb"
遇到一个新字符 如果比栈顶小 并且在该字符后面还有和栈顶一样的 就把栈顶的字符抛弃了
public String removeDuplicateLetters(String s) {
Stack<Character> stack=new Stack<>();
for (int i = 0; i < s.length(); i++) {
Character c=s.charAt(i);
if(stack.contains(c))
continue;
while(!stack.isEmpty() &&
stack.peek()>c &&
s.indexOf(stack.peek(),i) != -1)
stack.pop();
stack.push(c);
}
char[] chars =new char[stack.size()];
for (int i = 0; i < stack.size(); i++) {
chars[i]=stack.get(i);
}
return new String(chars);
}