return the first non repeating character in a string in javascript

后端 未结 26 2211
清酒与你
清酒与你 2020-12-30 09:04

So I tried looking for this in the search but the closest I could come is a similar answer in several different languages, I would like to use Javascript to do it.

T

相关标签:
26条回答
  • 2020-12-30 09:11
    let arr = [10, 5, 3, 4, 3, 5, 6];
    outer:for(let i=0;i<arr.length;i++){
        for(let j=0;j<arr.length;j++){
            if(arr[i]===arr[j+1]){
                console.log(arr[i]);
                break outer;
            }
        }
    }
    
    
    //or else you may try this way...
    function firstDuplicate(arr) {
        let findFirst = new Set()
        for (element of arr)
            if (findFirst.has(element ))
                return element 
            else
                findFirst.add(element )
    }
    
    0 讨论(0)
  • 2020-12-30 09:11

    You can iterate through each character to find() the first letter that returns a single match(). This will result in the first non-repeated character in the given string:

    const first_nonrepeated_character = string => [...string].find(e => string.match(new RegExp(e, 'g')).length === 1);
    const string = 'aabcbd';
    
    console.log(first_nonrepeated_character(string)); // c

    0 讨论(0)
  • 2020-12-30 09:13

    Two further possibilities, using ECMA5 array methods. Will return undefined if none exist.

    Javascript

    function firstNonRepeatedCharacter(string) {
        return string.split('').filter(function (character, index, obj) {
            return obj.indexOf(character) === obj.lastIndexOf(character);
        }).shift();
    }
    
    console.log(firstNonRepeatedCharacter('aabcbd'));
    

    On jsFiddle

    Or if you want a bit better performance, especially on longer strings.

    Javascript

    function firstNonRepeatedCharacter(string) {
        var first;
    
        string.split('').some(function (character, index, obj) {
            if(obj.indexOf(character) === obj.lastIndexOf(character)) {
                first = character;
                return true;
            }
    
            return false;
        });
    
        return first;
    }
    
    console.log(firstNonRepeatedCharacter('aabcbd'));
    

    On jsFiddle

    0 讨论(0)
  • 2020-12-30 09:13

    Easy way to solve this algorithm, very straight forward.

    function firstNonRepeatChar(str){
        let map = {};
        for(let i=0; i<str.length; i++){
            if(Object.keys(map).includes(str[i])){
                map[str[i]]++
            }
            else{
                map[str[i]] = 1;
            }
        }
    
        for(let j=0; j< Object.values(map).length; j++){
            if(Object.values(map)[j] == 1){
                console.log(Object.keys(map)[j]);
                return
            }
            if (j == Object.values(map).length-1 && Object.values(map)[j] != 1){
                console.log('_');
                return;
            }
            else{
                continue;
            }
        }
    }
    
    nonRepeat("aaabbcccdeeef");
    
    0 讨论(0)
  • 2020-12-30 09:13
        //To find first non repeating letter 
        //It will check for both upper and lower case
        //only use one String.indexOf()
    
        var mystr="ohvhvtccggt";
        var checkFirstNonRepeating=function(){
        var ele=[];
          for(var i=0;i<mystr.length;i++) {
          var key=mystr.charAt(i);
          if(!ele[key])
              ele[key]=0;
          ele[key]++;
    
       //Just check for second occurance of character 
       //no need to use indexOf twice
    
           if(mystr.indexOf(key,i+1)==-1 && ele[key]<2)  
             return mystr[i];
           }
         return "All repeating letters";
        }
        console.log(checkFirstNonRepeating());
                  
            /*
            Input  : "ohvhvtoccggt"
            Output : All repeating letters
            Input  :"oohjtht"
            Output :j 
            */
    
    0 讨论(0)
  • 2020-12-30 09:14

    This solution should works with array with integers and string.

    function firstNoneRepeating(list, map = new Map()) {
      for (let item of list) {
        if (map.has(item)) {
          map.set(item, map.get(item) + 1);
        } else {
          map.set(item, 1);
        }
      }
      for (let [key, value] of map.entries()) {
        if (value === 1) {
          return key;
        }
      }
    }
    console.log(firstNoneRepeating("aabcbd"));
    console.log(firstNoneRepeating([5, 2, 3, 4, 2, 6, 7, 1, 2, 3]));
    
    
    0 讨论(0)
提交回复
热议问题