-
Notifications
You must be signed in to change notification settings - Fork 0
/
3b-anagram.js
80 lines (58 loc) · 2.44 KB
/
3b-anagram.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
B. Анаграмма?
Ограничение времени 1 секунда (фактическое использование на тестах – до 70ms)
Ограничение памяти 64Mb (фактическое использование на тестах – до 6.63Mb)
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Задано две строки, нужно проверить, является ли одна анаграммой другой. Анаграммой называется строка, полученная из другой перестановкой букв.
Формат ввода
Строки состоят из строчных латинских букв, их длина не превосходит 100 000. Каждая записана в отдельной строке.
Формат вывода
Выведите "YES" если одна из строк является анаграммой другой и "NO" в противном случае.
Пример 1
Ввод
dusty
study
Вывод
YES
Пример 2
Ввод
rat
bat
Вывод
NO
*/
const fs = require('fs');
const input = fs.readFileSync('input.txt', 'utf8').toString().trim().split('\n');
const firstWord = input[0].trim();
const firstWordLength = firstWord.length;
const firstWordLetterMap = new Map();
const secondWord = input[1].trim();
const secondWordLength = secondWord.length;
const secondWordLetterMap = new Map();
let isAnagram = false;
if (firstWordLength === secondWordLength) {
for (let i = 0; i < firstWordLength; ++i) {
const firstWordValue = firstWordLetterMap.get(firstWord[i]);
if (firstWordValue) {
firstWordLetterMap.set(firstWord[i], firstWordValue + 1);
} else {
firstWordLetterMap.set(firstWord[i], 1);
}
const secondWordValue = secondWordLetterMap.get(secondWord[i]);
if (secondWordValue) {
secondWordLetterMap.set(secondWord[i], secondWordValue + 1);
} else {
secondWordLetterMap.set(secondWord[i], 1);
}
}
isAnagram = true;
for (let i = 97; i <= 122; ++i) {
if (firstWordLetterMap.get(String.fromCharCode(i)) !== secondWordLetterMap.get(String.fromCharCode(i))) {
isAnagram = false;
break;
}
}
}
const result = isAnagram ? 'YES' : 'NO';
fs.writeFileSync('output.txt', `${result}`);