JSFiddle - React, Tailwind, and code Playground
by Kaeden
JavaScript
var isSubAnagram = function(s, t) {
if (s.length < t.length) {
return false;
};
if (s.length == 0) {
return true;
}
var sChars = s.split("");
var subStr = sChars.splice(0, t.length - 1).join("");
for (var i = t.length - 1; i < sChars.length; i++) {
subStr += sChars.shift();
if (isAnagram(subStr, t)) {
return true;
}
if (subStr.length) {
subStr = subStr.substr(1, subStr.length);
}
}
return false;
};
var isAnagram = function(s, t) {
if (s.length != t.length) {
return false;
}
var tCounts = {};
var sCounts = {};
var tChars = t.split("");
var sChars = s.split("");
for (var i = 0; i < tChars.length; i++) {
var tChar = tChars[i];
tCounts[tChar] = tCounts[tChar] == null ? 1 : tCounts[tChar] + 1;
var sChar = sChars[i];
sCounts[sChar] = sCounts[sChar] == null ? 1 : sCounts[sChar] + 1;
}
if (Object.keys(tCounts).length != Object.keys(sCounts).length) {
return false;
}
for (var key in tCounts) {
var tCount = tCounts[key];
var sCount = sCounts[key];
if (tCount != sCount) {
return false;
}
}
return true;
};
var test = function(s, t, expected) {
var actual = isAnagram(s, t);
var result = expected == actual ? "SUCCESS": "FAILURE";
console.log(s + " is an anagram of " + t + "? " + result);
};
// alert(isSubAnagram("racecar", "eacc"));
test("car", "rac", true);
test("terran", "ranter", true);
test("cara", "rac", false);
test("capr", "rdac", false);
test("apple", "pelpa", true);
test("razor", "zrora", true);