给你⼀个仅包含⼩写字⺟的字符串,请你去除字符串中重复的字⺟,使得每个字⺟只出现⼀次。需保证返回结果的字典序最⼩,要求不能打乱其他字符的相对位置
示例:
输⼊:”bcabc”
输出:”abc”
输⼊:”cbacdcbc”
输出:”acdb”
要求:
开发语言不限,注意:如果是高级语言,针对比较大小,仅允许数字或字符的比较,不允许直接使用字符串比较
例如:
s1 = “xxx”,s2=“xxx”;
if(s1 < s2) {
…
}
else {
…
}
以上示例代码不符合要求
class Solution2 {
func derepeatString(_ s: String) -> String {
var newStr = s;
var stack_c = [Character]()
//cbgafhbaccccba
for c in s {
//去掉当前字符的str
newStr.removeFirst();
if stack_c.count == 0 {
stack_c.append(c)
continue;
}
if !stack_c.contains(c) {
for c2 in stack_c {
if stack_c.last! > c && newStr.contains(stack_c.last!){
//栈顶的字符大于当前字符时,如果后面还会出现,则删除栈顶字符,当前字符入栈
stack_c.removeLast()
if stack_c.count == 0 {
stack_c.append(c)
break
}
}else{
stack_c.append(c)
break
}
}
}
}
return String(stack_c)
}
}