从字符串中删除重复的字符

Zla*_*niq 11 javascript string duplicates

我必须在JavaScript中创建一个删除字符串中所有重复字母的函数.到目前为止,我已经能够做到这一点:如果我有"anaconda"这个词,它会显示我作为结果"anaconda",它应该显示"鳕鱼".这是我的代码:

function find_unique_characters( string ){
    var unique='';
    for(var i=0; i<string.length; i++){
        if(unique.indexOf(string[i])==-1){
            unique += string[i];
        }
    }
    return unique;
}
console.log(find_unique_characters('baraban'));
Run Code Online (Sandbox Code Playgroud)

mas*_*bot 12

我们现在也可以使用filter方法清理:

function removeDuplicateCharacters(string) {
  return string
    .split('')
    .filter(function(item, pos, self) {
      return self.indexOf(item) == pos;
    })
    .join('');
}
console.log(removeDuplicateCharacters('baraban'));
Run Code Online (Sandbox Code Playgroud)

工作示例:https: //jsfiddle.net/masterspambot/ppz6uec1/


Cer*_*rus 9

function find_unique_characters(str) {
  var unique = '';
  for (var i = 0; i < str.length; i++) {
    if (str.lastIndexOf(str[i]) == str.indexOf(str[i])) {
      unique += str[i];
    }
  }
  return unique;
}

console.log(find_unique_characters('baraban'));
console.log(find_unique_characters('anaconda'));
Run Code Online (Sandbox Code Playgroud)

如果您只想返回在字符串中出现一次的字符,请检查它们的最后一次出现是否与第一次出现的位置相同.

您的代码至少返回字符串中的所有字符一次,而不是只返回不超过一次的字符.但显然你已经知道了,否则就不会有问题;-)

  • 就像我说的那样,提供你自己的答案.不要只是告诉别人完全重写一个_working,upvoted_答案,因为它不像它那样有效. (3认同)
  • 而不是在这个抱怨复杂性的问题上低估一个更有效的答案,你如何添加自己没有n ^ 2复杂性的答案,@ ZacB?如果没有___至少___给出一些建议,不要告诉别人完全重写他们的答案.这不是建设性的,坦率地说,粗鲁无礼. (2认同)
  • 哦,`lastIndexOf` 和 `indexOf` _combined_ 最多为 O(N)。但坦率地说,在这么小的事情上,整个效率讨论是荒谬的。 (2认同)