Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
Binary file added Week1/.DS_Store
Binary file not shown.
Binary file added Week1/assignments/.DS_Store
Binary file not shown.
70 changes: 70 additions & 0 deletions Week1/assignments/armand-collins/Anagrams.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
let result = [];

function getAllSubstrings(str) {
let i, j;

for (i = 0; i < str.length; i++) {
for (j = i + 1; j < str.length + 1; j++) {
result.push(str.slice(i, j));
}
}
return result;
}

function isAnagramSort(str1, str2) {
str1 = str1.split("").sort().join("");
str2 = str2.split("").sort().join("");
return str1 == str2;
}

function isAnagramMap(str1, str2) {
//Anagarms must have the same length
if (str1.length != str2.length) {
return false;
}
var map = new Map();
for (let i = 0; i < str1.length; i++) {
let val1 = map.get(str1[i]);
if (!val1) {
map.set(str1[i], 1);
} else {
map.set(str1[i], val1 + 1);
}

let val2 = map.get(str2[i]);
if (!val2) {
map.set(str2[i], 1);
} else {
map.set(str2[i], val2 + 1);
}
}

//every value in the map should be even.
let entries = map.entries();
for(let [_,v] of map){
if(v % 2 !== 0){
return false;
}
}
return true;

}

function anagramCheck(arr) {
let final = [];
let count = 0;
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (isAnagramMap(arr[i], arr[j])) {
final.push(...[arr[i], arr[j]]);
count++
}
}
}
//return final;
return count
}

var theString = 'mmom';
getAllSubstrings('mom');
console.log(anagramCheck(result))