Check if two strings are permutation of each other in JavaScript
Last Updated :
27 May, 2024
In this approach, we are going to discuss how we can check if two strings are permutations of each other or not using JavaScript language. If two strings have the same number of characters rather than having the same position or not it will be a permutation.
Example:
Input: "pqrs" , "rpqs"
Output: True
Explanation: Both strings have a same number of characters.
These are the approaches by using these we can Check if two strings are permutations of each other or not:
Method 1: Using Sorting
- Creating a function and storing the length of strings in separate variables.
- Checking if the length of both strings is not the same then we will return false. As strings are not permutations of each other.
- If the length is the same then we will sort both the strings.
- We will check the presence of the same character in both strings in a for loop. If any of the characters get mismatched then we will return false. else we will return true at the end of the for loop.
Example:
JavaScript
function arePermutation(str1, str2) {
// Get lengths of both strings
let n1 = str1.length;
let n2 = str2.length;
// If length of both strings
// is not the same, then they
// cannot be permutations
if (n1 !== n2)
return false;
// Convert the strings to arrays
let ch1 = str1.split('');
let ch2 = str2.split('');
// Sort both arrays
ch1.sort();
ch2.sort();
// Compare sorted arrays
for (let i = 0; i < n1; i++)
if (ch1[i] !== ch2[i])
return false;
return true;
}
// Driver Code
let str1 = "test";
let str2 = "teat";
if (arePermutation(str1, str2))
console.log("Yes");
else
console.log("No");
Time Complexity: O(nLogn)
Auxiliary space: O(1)
Method 2: Count characters
- Creating a counting array of size 256. In which we are counting the number of characters present in both of the strings in two different array.
- If length of the strings are not same we will return false.
- We are using for loop for comparing the count of character if the count is not same then we will return false else a the end of for loop it will return true.
Example:
JavaScript
let NO_OF_CHARS = 256;
function arePermutation(str1, str2) {
// Create 2 count arrays
// and initialize all values as 0
let count1 = Array(NO_OF_CHARS).fill(0);
let count2 = Array(NO_OF_CHARS).fill(0);
if (str1.length !== str2.length)
return false;
for (let i = 0; i < str1.length && i < str2.length; i++) {
count1[str1[i].charCodeAt(0)]++;
count2[str2[i].charCodeAt(0)]++;
}
// Compare count arrays
for (let i = 0; i < NO_OF_CHARS; i++) {
if (count1[i] !== count2[i])
return false;
}
return true;
}
// Driver code
let str1 = "geeks";
let str2 = "geeks";
if (arePermutation(str1, str2))
console.log("Yes");
else
console.log("No");
Time Complexity: O(n)
Auxiliary space: O(n).
Method 3: Using Map
- First we check if the lengths of both strings are equal. If not, they cannot be permutations, so we return false.
- Then we create a Map to store the character frequencies of str1 then, we iterate through str2 and decrement the frequencies in the Map.
- If a character is not found in the Map or its frequency becomes zero, we return false.
- If all characters in str2 are successfully matched, the Map will be empty, and we return true.
Example:
JavaScript
function arePermutations(str1, str2) {
// Check if the lengths of
// both strings are the same
if (str1.length !== str2.length) {
return false;
}
// Create a Map to store character
const charFrequencyMap = new Map();
// Fill the Map with characters
for (let char of str1) {
charFrequencyMap.set(char,
(charFrequencyMap.get(char) || 0) + 1);
}
// Iterate through str2
for (let char of str2) {
if (!charFrequencyMap.has(char)) {
// Character not found in str1
return false;
}
charFrequencyMap.set(char,
charFrequencyMap.get(char) - 1);
if (charFrequencyMap.get(char) === 0) {
charFrequencyMap.delete(char);
}
}
// If the Map is empty
// all characters in str2
//have been matched
return charFrequencyMap.size === 0;
}
// Test cases
console.log(arePermutations("abc", "cba"));
Time complexity: O(n)
Space Complexity: O(n)
Using XOR Operation
Using XOR operation, XOR all characters in both strings. If the result is zero, the strings have the same characters with the same frequency, indicating they are permutations of each other.
Example: In this example The function arePermutations compares lengths, then bitwise XORs character codes of each string. Returns true if the XOR result is 0, indicating permutation
JavaScript
function arePermutations(str1, str2) {
if (str1.length !== str2.length) {
return false;
}
let result = 0;
for (let i = 0; i < str1.length; i++) {
result ^= str1.charCodeAt(i) ^ str2.charCodeAt(i);
}
return result === 0;
}
const string1 = "abc";
const string2 = "bca";
console.log(arePermutations(string1, string2));
const string3 = "abc";
const string4 = "def";
console.log(arePermutations(string3, string4));
Similar Reads
Check if two strings are permutation of each other Write a function to check whether two given strings are Permutation of each other or not. A Permutation of a string is another string that contains same characters, only the order of characters can be different. For example, "abcd" and "dabc" are Permutation of each other. We strongly recommend that
13 min read
Javascript Program to Check if strings are rotations of each other or not | Set 2 Given two strings s1 and s2, check whether s2 is a rotation of s1. Examples: Input : ABACD, CDABAOutput : TrueInput : GEEKS, EKSGEOutput : TrueWe have discussed an approach in earlier post which handles substring match as a pattern. In this post, we will be going to use KMP algorithm's lps (longest
2 min read
Javascript Program To Check Whether Two Strings Are Anagram Of Each Other Write a function to check whether two given strings are anagram of each other or not. An anagram of a string is another string that contains the same characters, only the order of characters can be different. For example, "abcd" and "dabc" are an anagram of each other.Method 1 (Use Sorting):Sort bot
6 min read
Check if Strings are Equal in JavaScript These are the following ways to check for string equality in JavaScript:1. Using strict equality operator - Mostly UsedThis operator checks for both value and type equality. it can be also called as strictly equal and is recommended to use it mostly instead of double equals.JavaScriptlet s1 = 'abc';
2 min read
Javascript Program to Check if all rows of a matrix are circular rotations of each other Given a matrix of n*n size, the task is to find whether all rows are circular rotations of each other or not. Examples: Input: mat[][] = 1, 2, 3 3, 1, 2 2, 3, 1Output: YesAll rows are rotated permutationof each other.Input: mat[3][3] = 1, 2, 3 3, 2, 1 1, 3, 2Output: NoExplanation : As 3, 2, 1 is not
2 min read