https://leetcode.com/problems/remove-duplicate-letters/description
给定一个只包含小写字母的字符串,删除重复的字母,使得每个字母仅出现一次。你必须确保你得到的结果是所有可能结果中字典序最小的。例子: 给定 "bcabc",返回 "abc" 给定 "cbacdcbc",返回 "acdb"
Python:
def removeDuplicateLetters(self, s):
for c in sorted(set(s)):
suffix = s[s.index(c):]
if set(suffix) == set(s):
return c + self.removeDuplicateLetters(suffix.replace(c, ''))
return ''
上述是正确的解决方案,因此我尝试将其转换为JavaScript。
var removeDuplicateLetters = function(s) {
for (var c of new Set(s.split('').sort())) {
var suffix = s.substring(s.indexOf(c));
if (setsAreEqual(new Set(suffix), new Set(s))) {
return c + removeDuplicateLetters(suffix.replace(c, ''));
}
}
return '';
};
const setsAreEqual = (a, b) => a.size === b.size && [...a].every(x => b.has(x));
console.log(removeDuplicateLetters("cbacdcbc"));
我的翻译为什么会给出错误的答案acdbc
而不是acdb
?
我的翻译有哪里出错了?
"".join(sorted((set("cbacdcbc"))))
- Sailesh KothaArray.from(new Set("cbacdcbc".split(""))).sort().join('')
- Keith