Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Vì vậy, tôi đã thử tìm kiếm điều này trong tìm kiếm nhưng gần nhất tôi có thể đến là một câu trả lời tương tự trong một số ngôn ngữ khác nhau, tôi muốn sử dụng JavaScript để làm điều đó.

Vấn đề là tôi có một chuỗi tùy ý mà tôi muốn trả về ký tự không lặp lại đầu tiên. Ví dụ: 'ABA' -> sẽ trả lại b 'aabcbd' -> sẽ trả lại c. Đây là những gì tôi có cho đến nay, chỉ là một vòng đơn giản để bắt đầu.

var someString = 'aabcbd';



var firstNonRepeatedCharacter = function(string) {
for(var i = 0; i < someString.length; i++){

}
};

http://jsfiddle.net/w7f87/ không chắc chắn nơi để đi từ đây

hỏi ngày 17 tháng 7 năm 2014 lúc 0:29Jul 17, 2014 at 0:29

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

TaylorallredtaylorallredTaylorAllred

1.1312 huy hiệu vàng9 Huy hiệu bạc20 Huy hiệu đồng2 gold badges9 silver badges20 bronze badges

13

Bạn có thể sử dụng phương thức

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
1 để tìm ký tự không lặp lại. Nếu bạn tìm kiếm ký tự trong chuỗi, nó sẽ là người đầu tiên được tìm thấy và bạn sẽ không tìm thấy người khác sau nó:

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}

Bản demo: http://jsfiddle.net/guffa/se4dd/

Đã trả lời ngày 17 tháng 7 năm 2014 lúc 0:38Jul 17, 2014 at 0:38

5

Nếu bạn đang tìm kiếm lần xuất hiện đầu tiên của một chữ cái chỉ xảy ra một lần, tôi sẽ sử dụng một cấu trúc dữ liệu khác để theo dõi số lần mỗi chữ cái đã được nhìn thấy. Điều này sẽ cho phép bạn làm điều đó với một giải pháp O (N) thay vì một O (N2), ngoại trừ N trong trường hợp này là sự khác biệt lớn hơn giữa mã ký tự nhỏ nhất và lớn nhất hoặc chiều dài của chuỗi và do đó không trực tiếp có thể so sánh.

Lưu ý: Một phiên bản trước đó của

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
2 đã sử dụng này - trong thực tế hóa ra là cực kỳ chậm. Tôi đã cập nhật nó để sử dụng mã ký tự làm chỉ mục để giữ cho việc tìm kiếm nhanh nhất có thể. Những gì chúng ta thực sự cần là một bảng băm nhưng với các giá trị nhỏ của N và tốc độ nhỏ, tương đối, có lẽ nó không đáng cho vấn đề này. Trên thực tế, bạn nên thích giải pháp của @guffa. Tôi chỉ bao gồm của tôi vì cuối cùng tôi đã học được rất nhiều từ nó.

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}

Xem Fiddle tại http://jsfiddle.net/b2de4/

Ngoài ra một bài kiểm tra hiệu suất (hơi khác so với bình luận) tại http://jsperf.com/24793051/2

Đã trả lời ngày 17 tháng 7 năm 2014 lúc 1:03Jul 17, 2014 at 1:03

TVanfossontvanfossontvanfosson

516K97 Huy hiệu vàng695 Huy hiệu bạc793 Huy hiệu Đồng97 gold badges695 silver badges793 bronze badges

3

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};

Vì vậy, chúng tôi tạo ra một mảng của tất cả các ký tự, bằng cách chia tách trên bất cứ điều gì.

Sau đó, chúng tôi lặp qua từng ký tự và chúng tôi lọc mảng chúng tôi tạo, vì vậy chúng tôi sẽ nhận được một mảng chỉ các ký tự đó. Nếu độ dài là 1, chúng ta biết chúng ta có một ký tự không lặp lại.

Fiddle: http://jsfiddle.net/2fpzf/

Đã trả lời ngày 17 tháng 7 năm 2014 lúc 0:37Jul 17, 2014 at 0:37

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Davedavedave

59,2K4 Huy hiệu vàng71 Huy hiệu bạc88 Huy hiệu đồng4 gold badges71 silver badges88 bronze badges

0

Hai khả năng khác, sử dụng các phương pháp mảng ECMA5. Sẽ trả lại

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
3 nếu không có tồn tại.

JavaScript

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

console.log(firstNonRepeatedCharacter('aabcbd'));

Trên JSfiddle

Hoặc nếu bạn muốn có hiệu suất tốt hơn một chút, đặc biệt là trên các chuỗi dài hơn.

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'));

Trên JSfiddle

Hoặc nếu bạn muốn có hiệu suất tốt hơn một chút, đặc biệt là trên các chuỗi dài hơn.Jul 17, 2014 at 0:46

Xotic750Xotic750Xotic750

Đã trả lời ngày 17 tháng 7 năm 2014 lúc 0:468 gold badges55 silver badges78 bronze badges

22.3k8 Huy hiệu vàng55 Huy hiệu bạc78 Huy hiệu Đồng

Tôi đã đến điều này trong khi phải đối mặt với vấn đề tương tự. Hãy để tôi thêm 2 dòng của tôi. Những gì tôi đã làm là một câu trả lời tương tự như câu trả lời của Guffa. Nhưng sử dụng cả phương thức

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
1 và
var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
5.

function nonRepeated(str) {
   for(let i = 0; i < str.length; i++) {
      let j = str.charAt(i)
      if (str.indexOf(j) == str.lastIndexOf(j)) {
        return j;
      }
   }
   return null;
}

nonRepeated("aabcbd"); //c

Mehod của tôi:

Đơn giản,

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
6 lần đầu tiên xuất hiện một nhân vật &
var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
7 có được lần xuất hiện cuối cùng. Vì vậy, khi lần xuất hiện đầu tiên cũng là == Sự xuất hiện cuối cùng, điều đó có nghĩa là chỉ có một nhân vật.Nov 4, 2018 at 21:39

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Đã trả lời ngày 4 tháng 11 năm 2018 lúc 21:39

function firstNonRepeat(str) {

   // Sorting str so that all repeating characters will come together & replacing it with empty string and taking first character using substr.

   var rsl = str.split('').sort().join('').replace(/(\w)\1+/g,'').substr(0,1);

   if(rsl) return rsl;

   else return 'All characters are repeated in ' + str;

}

console.log(firstNonRepeat('aaabcccdeeef'));
console.log(firstNonRepeat('aaacbdcee'));
console.log(firstNonRepeat('aabcbd'));

Đây là một giải pháp sử dụng Regex để thay thế tất cả các ký tự lặp lại và sau đó trả về ký tự đầu tiên.Feb 13, 2020 at 8:35

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

2

Đã trả lời ngày 13 tháng 2 năm 2020 lúc 8:35

Trước hết, hãy bắt đầu vòng lặp của bạn ở mức 1, không phải 0. Không có điểm nào trong việc kiểm tra ký tự đầu tiên để xem nó có lặp lại không, rõ ràng là không thể.

Bây giờ, trong vòng lặp của bạn, bạn có somestring [i] và somestring [i - 1]. Họ là những nhân vật hiện tại và trước đó.

Nếu somestring [i] === somestring [i - 1] thì các ký tự đang lặp lại, nếu somestring [i]!

Tôi sẽ không viết hết mọi thứ cho bạn, nhưng hy vọng quá trình suy nghĩ đằng sau điều này sẽ giúp íchJul 17, 2014 at 0:40

Đã trả lời ngày 17 tháng 7 năm 2014 lúc 0:40Martin Booth

Martin Boothmartin Gian hàng29 silver badges30 bronze badges

2

 function FirstNotRepeatedChar(str) {
 var arr = str.split('');
 var result = '';
 var ctr = 0; 
  for (var x = 0; x < arr.length; x++) {
   ctr = 0;
  for (var y = 0; y < arr.length; y++) {
  if (arr[x] === arr[y]) {
    ctr+= 1;
    }
   }

if (ctr < 2) {
  result = arr[x];
  break;
  }
}
return result;
}
console.log(FirstNotRepeatedChar('asif shaik'));

8.36529 Huy hiệu bạc 30 Huy hiệu ĐồngApr 18, 2018 at 9:02

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

2

Đã trả lời ngày 18 tháng 4 năm 2018 lúc 9:02

const firstNonRepeating = str => {
  const set = new Set();
  const finalSet = new Set();
  str.split('').forEach(char => {
    if (set.has(char)) finalSet.delete(char);
    else {
      set.add(char);
      finalSet.add(char);
    }
  })
  const iter = finalSet.values();
  return iter.next().value;
}

Đây là một giải pháp O (n) với 2 bộ ES6, một bộ theo dõi tất cả các ký tự đã xuất hiện và một bản theo dõi chỉ các ký tự đã xuất hiện một lần. Giải pháp này tận dụng lợi thế của thứ tự chèn được bảo quản bởi tập hợp.Oct 18, 2018 at 15:25

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Đã trả lời ngày 18 tháng 10 năm 2018 lúc 15:25Andrew Heekin

Andrew Heekinandrew Heekin1 gold badge6 silver badges15 bronze badges

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
0

6411 Huy hiệu vàng6 Huy hiệu bạc15 Huy hiệu đồngFeb 4, 2019 at 7:55

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

0

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
1

Đã trả lời ngày 4 tháng 2 năm 2019 lúc 7:55

Bạn có thể sử dụng đối tượng bản đồ và đặt khóa và giá trị, trong đó giá trị bạn lưu trữ số lượng cho ký tự cụ thể đó, sau đó bạn có thể lặp qua bản đồ và kiểm tra giá trị 1 và trả về phím đó.

Đối tượng bản đồ nhớ lại thứ tự chèn ban đầu của các khóa.Feb 5, 2020 at 7:50

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Đã trả lời ngày 5 tháng 2 năm 2020 lúc 7:50Saurabh Yadav

3.2381 Huy hiệu vàng9 Huy hiệu bạc20 Huy hiệu đồng 201 gold badge9 silver badges20 bronze badges

Giải pháp này sẽ hoạt động với mảng với số nguyên và chuỗi.

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
2

Đã trả lời ngày 12 tháng 3 năm 2020 lúc 12:32Mar 12, 2020 at 12:32

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
3

Đã trả lời ngày 16 tháng 12 năm 2020 lúc 12:19Dec 16, 2020 at 12:19

1

Đổ đầy một mảng trống bằng các số không, có cùng chiều dài với mảng chuỗi và kiểm đếm số lần chúng xuất hiện qua vòng lặp. Lấy cái đầu tiên trong mảng được tính với giá trị 1.

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
4

Đã trả lời ngày 28 tháng 5 năm 2018 lúc 22:43May 28, 2018 at 22:43

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Kybakkybakkybak

8003 Huy hiệu vàng12 Huy hiệu bạc28 Huy hiệu đồng3 gold badges12 silver badges28 bronze badges

Bạn có thể lặp qua từng ký tự để

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
8 chữ cái đầu tiên trả về một
var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
9. Điều này sẽ dẫn đến ký tự không lặp lại đầu tiên trong chuỗi đã cho:

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
5

Đã trả lời ngày 18 tháng 11 năm 2018 lúc 6:45Nov 18, 2018 at 6:45

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Grant Millergrant MillerGrant Miller

25.8K16 Huy hiệu vàng140 Huy hiệu bạc157 Huy hiệu đồng16 gold badges140 silver badges157 bronze badges

Đây là giải pháp của tôi có độ phức tạp về thời gian của O (n)

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
6

Đã trả lời ngày 24 tháng 2 năm 2019 lúc 12:23Feb 24, 2019 at 12:23

Đây là giải pháp của tôi bằng cách sử dụng foreach và chuyển đổi chuỗi thành một mảng

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
7

Đã trả lời ngày 6 tháng 9 năm 2019 lúc 17:01Sep 6, 2019 at 17:01

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Đây là một cách tiếp cận khác:

Mỗi khi bạn tìm thấy ký tự bằng nhau lưu trữ nó trong một mảng và thoát ra khỏi vòng lặp. Nếu char không được tìm thấy trong mảng thì bạn có char không lặp lại đầu tiên

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
8

Đã trả lời ngày 4 tháng 10 năm 2019 lúc 11:18Oct 4, 2019 at 11:18

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

EugensuniceugensunicEugenSunic

12.6k8 Huy hiệu vàng64 Huy hiệu bạc82 Huy hiệu Đồng8 gold badges64 silver badges82 bronze badges

function firstNonRepeatedCharacter(string) {
  for (var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if (string.indexOf(c) == i && string.indexOf(c, i + 1) == -1) {
      return c;
    }
  }
  return null;
}
9

Bạn có thể kiểm tra liên kết bên dưới

https://codepen.io/t3veni/pen/wvvxJzm

Đã trả lời ngày 12 tháng 11 năm 2019 lúc 9:55Nov 12, 2019 at 9:55

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

ThrivenithriveniThriveni

4.1032 Huy hiệu vàng13 Huy hiệu bạc12 Huy hiệu Đồng2 gold badges13 silver badges12 bronze badges

Cách dễ dàng để giải quyết thuật toán này, rất thẳng về phía trước.

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
0

Đã trả lời ngày 22 tháng 2 năm 2020 lúc 6:40Feb 22, 2020 at 6:40

AbassabassAbass

12 huy hiệu đồng2 bronze badges

Dưới đây là một giải pháp khác chỉ bằng cách sử dụng mảng, sử dụng 26 ký tự duy nhất làm độ dài của mảng:

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
1

Đã trả lời ngày 15 tháng 5 năm 2020 lúc 14:06May 15, 2020 at 14:06

Ganesh Phirkeganesh Phirkeganesh phirke

4411 Huy hiệu vàng3 Huy hiệu bạc11 Huy hiệu đồng1 gold badge3 silver badges11 bronze badges

Chúng ta có thể theo dõi tần số của từng ký tự của chuỗi trong một đối tượng. Ví dụ: Đối với "AABCBD", chúng tôi có thể lưu trữ tần số là

{"A": 2, "B": 2, "C": 1, "D": 1}

Điều này sẽ mất thời gian O (N). Sau đó, chúng ta có thể đi qua đối tượng này và tìm ký tự đầu tiên có tần số 1, cũng sẽ mất thời gian O (n). Vì vậy, độ phức tạp về thời gian cho phương pháp này sẽ là O (N).

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
2

Lưu ý: Tôi sử dụng phương thức ES6 Object.keys có thể không hoạt động trong các trình duyệt cũ hơn.

Đã trả lời ngày 9 tháng 6 năm 2020 lúc 18:44Jun 9, 2020 at 18:44

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Prakprakprak

1331 Huy hiệu bạc9 Huy hiệu đồng1 silver badge9 bronze badges

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
3

Đã trả lời ngày 30 tháng 6 năm 2020 lúc 14:33Jun 30, 2020 at 14:33

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

0

Tôi đã sử dụng đối tượng để theo dõi số lượng ký tự trong một chuỗi sau đó trả lại char có giá trị FA là 1. Đây là bản demo:

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
4

Đã trả lời ngày 7 tháng 8 năm 2020 lúc 11:01Aug 7, 2020 at 11:01

Salma Elshahawysalma ElshahawySalma Elshahawy

1.0722 huy hiệu vàng11 Huy hiệu bạc21 Huy hiệu đồng2 gold badges11 silver badges21 bronze badges

1

Câu trả lời thỏa đáng và dễ hiểu nhất là như sau.

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
5

Giải thích: Nó lặp qua tất cả các ký tự của một chuỗi từ tiến và lùi và sau đó so sánh các giá trị. Nếu chỉ số của cả tìm kiếm tiến và lùi là đúng thì nó sẽ trả về ký tự đó.

Đã trả lời ngày 29 tháng 11 năm 2020 lúc 20:53Nov 29, 2020 at 20:53

Bilal Ahmadbilal AhmadBilal Ahmad

6668 Huy hiệu bạc13 Huy hiệu đồng8 silver badges13 bronze badges

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
6

Đã trả lời ngày 24 tháng 12 năm 2020 lúc 6:55Dec 24, 2020 at 6:55

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Masum Billahmasum BillahMasum Billah

2.05121 Huy hiệu bạc20 Huy hiệu đồng21 silver badges20 bronze badges

Việc thực hiện dưới đây có độ phức tạp thời gian tốt và nó chiếm các chữ cái có các trường hợp khác nhau:

Các bước phải chạm vào mọi ký tự trong chuỗi để biết nó có lặp lại hay không

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
7

Đã trả lời ngày 31 tháng 7 năm 2021 lúc 19:17Jul 31, 2021 at 19:17

Dung dịch dưới đây là một loại mẫu bộ đếm tần số và nó sẽ chỉ chạy một vòng, vì vậy O (n) sẽ là độ phức tạp về thời gian.

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
8

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Sao Chức Nữ

26.7K27 Huy hiệu vàng89 Huy hiệu bạc96 Huy hiệu Đồng27 gold badges89 silver badges96 bronze badges

Đã trả lời ngày 8 tháng 8 năm 2021 lúc 12:38Aug 8, 2021 at 12:38

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Đây là một giải pháp khác

function firstNonRepeatedCharacter(string) {
   var counts = {};
   var i, minCode = 999999, maxCode = -1;
   for (i = 0; i < string.length; ++i) {
        var letter = string.charAt(i);
        var letterCode = string.charCodeAt(i);
       if (letterCode < minCode) {
           minCode = letterCode;
       }
       if (letterCode > maxCode) {
           maxCode = letterCode;
       }
        var count = counts[letterCode];
        if (count) {
           count.count = count.count + 1;
        }
        else {
            counts[letterCode] = { letter: letter, count: 1, index: i };
        }
   }

    var smallestIndex = string.length;
    for (i = minCode; i <= maxCode; ++i) {
       var count = counts[i];
       if (count && count.count === 1 && count.index < smallestIndex) {
          smallestIndex = count.index;
       }
   }

    return smallestIndex < string.length ? string.charAt(smallestIndex) : '';
}
9

Đã trả lời ngày 28 tháng 9 năm 2021 lúc 15:26Sep 28, 2021 at 15:26

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Hasan Zahranhasan ZahranHasan Zahran

1.27614 Huy hiệu bạc13 Huy hiệu đồng14 silver badges13 bronze badges

Nếu bất kỳ ai tìm kiếm giải pháp một dòng n es6

var firstNonRepeatedCharacter = function(string) {
  var chars = string.split('');
  for (var i = 0; i < string.length; i++) {
    if (chars.filter(function(j) { 
                        return j == string.charAt(i); 
               }).length == 1) return string.charAt(i);
  }
};
0

Đã trả lời ngày 29 tháng 9 năm 2021 lúc 17:27Sep 29, 2021 at 17:27

Hướng dẫn how can you find the first non repeated character in a word javascript? - làm cách nào bạn có thể tìm thấy ký tự không lặp lại đầu tiên trong một từ javascript?

Làm thế nào để bạn tìm thấy ký tự không lặp lại đầu tiên trong một chuỗi?

Tìm ký tự không lặp lại đầu tiên của chuỗi đã cho ..
Xóa khoảng trống khỏi một chuỗi đã cho ..
Di chuyển không gian đến phía trước chuỗi trong một lần chuyển tiếp ..
Xóa thêm khoảng trống khỏi một chuỗi ..
Urlify một chuỗi đã cho (thay thế khoảng trắng bằng %20).
In tất cả các chuỗi có thể được thực hiện bằng cách đặt không gian ..

Làm thế nào để bạn in ký tự không lặp lại đầu tiên từ một chuỗi trong JavaScript?

var firstNonrepeatEdCharacter = function (string) {var chars = string.split ('');for (var i = 0; i split(''); for (var i = 0; i < string. length; i++) { if (chars. filter(function(j) { return j == string.

Làm thế nào để bạn tìm thấy các ký tự không lặp lại?

Tìm ký tự không lặp lại đầu tiên theo chuỗi [4 cách]..
Phương pháp 1: Sử dụng indexof () và lastindexof () [dễ nhất].
Phương pháp 2: Sử dụng LinkedHashMap ..
Phương pháp 3: Sử dụng Set và ArrayList ..
Phương pháp 4: Sử dụng Java 8 ..

Làm thế nào để bạn tìm thấy một ký tự cụ thể trong một chuỗi JavaScript?

Phương thức indexof () trả về vị trí của lần xuất hiện đầu tiên của một giá trị trong một chuỗi.Phương thức indexof () trả về -1 nếu không tìm thấy giá trị.Phương pháp indexof () là trường hợp nhạy cảm. returns the position of the first occurrence of a value in a string. The indexOf() method returns -1 if the value is not found. The indexOf() method is case sensitive.