Kiểm tra xem một chuỗi được cho có phải là chuỗi đẳng hình (isomorphic) hay không?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
176 lượt xem
Javascript senior

Để hai chuỗi là đẳng hình, tất cả các lần xuất hiện của một ký tự trong chuỗi A có thể được thay thế bằng một ký tự khác để được chuỗi B. Thứ tự của các ký tự phải được giữ nguyên. Phải có ánh xạ 1-1 cho từng ký tự của chuỗi A với mọi ký tự của chuỗi B.

  • papertitle sẽ trả về true.
  • eggsad sẽ trở lại false.
  • dggadd sẽ trả về true.
isIsomorphic("egg", 'add'); // true
isIsomorphic("paper", 'title'); // true
isIsomorphic("kick", 'side'); // false

function isIsomorphic(firstString, secondString) {
   // Check if the same lenght. If not, they cannot be isomorphic
   if (firstString.length !== secondString.length) return false
   var letterMap = {};
   for (var i = 0; i < firstString.length; i++) {
      var letterA = firstString[i],
      letterB = secondString[i];
      // If the letter does not exist, create a map and map it to the value
      // of the second letter
      if (letterMap[letterA] === undefined) {
         letterMap[letterA] = letterB;
      } else if (letterMap[letterA] !== letterB) {
         // Eles if letterA already exists in the map, but it does not map to
         // letterB, that means that A is mapping to more than one letter.
         return false;
      }
   }
   // If after iterating through and conditions are satisfied, return true.
   // They are isomorphic
   return true;
}
Câu hỏi tiếp theo: Hoisting trong JavaScript là gì?
{{login.error}}