Từ đảo (Anagrams)
Anagrams là cặp chuỗi, một trong khi sắp xếp lại theo mẫu nhất định cho ra chuỗi kia.
Ví dụ - 'hello' và 'lolhe' là anagrams vì có thể sắp xếp lại 'lolhe' thành 'hello' hoặc ngược lại.
Cần viết hàm nhận hai chuỗi str1 và str2. Hàm trả về true nếu là anagrams, false ngược lại.
Có thể tạo bản đồ đếm số ký tự cho mỗi chuỗi đầu vào. Sau đó so sánh hai bản đồ xem có giống hệt nhau không.
Ví dụ
const str1 = 'hello';
const str2 = 'lolhe';
const charCount = string => {
const table = {};
for (let char of string.replace(/\W/g, "").toLowerCase()) table[char] = table[char] + 1 || 1;
return table;
};
const anagrams = (stringA, stringB) => {
const charCountA = charCount(stringA);
const charCountB = charCount(stringB);
if (Object.keys(charCountA).length !== Object.keys(charCountB).length)
return false;
for (let char in charCountA)
if (charCountA[char] !== charCountB[char])
return false;
return true;
};
console.log(anagrams(str1, str2));
Kết quả
Kết quả trong console sẽ là:
true