In this article, we are going to see various methods with which you can detect repeated characters in a string. Checking for repeated characters in a string involves examining the string’s content to identify if any character occurs more than once. This helps detect duplications or repetitions within the text.
Input: Str = “neveropen”
Output:
e, count = 4
g, count = 2
k, count = 2
s, count = 2
Explanation: e,g,k,and s are characters which are occured in string in more than one times.
There are several methods that can be used to Check for repeated characters in a string JavaScript.
Table of Content
We will explore all the above methods along with their basic implementation with the help of examples.
Approach 1: Using sort() method with for…of loop
In this approach,we utilize the sort() method to alphabetically sort the characters of our inputStr. Then, we employ a for…of loop to iterate through the sorted string, identifying and gathering duplicate characters while ensuring they are not duplicated within an array.
Syntax:
array.sort()
Example: In this example we are using the above-explained approach.
Javascript
const inputStr = "neveropen" ; const sortedStr = inputStr.split( '' ).sort().join( '' ); let duplicates = []; let prevChar = sortedStr[0]; for (const char of sortedStr.slice(1)) { if (char === prevChar && !duplicates.includes(char)) { duplicates.push(char); } prevChar = char; } if (duplicates.length > 0) { console.log(`The duplicate characters : ${duplicates.join( ', ' )}`); } else { console.log(`The string "${inputStr}" has no duplicate characters.`); }; |
The duplicate characters : G, e, k, s
Approach 2: Using a Set in JavaScript
In this approach we use a Set to efficiently find and store duplicate characters in a given string. It iterates through the string, adding each character to the Set if it’s not already present, and adds it to the ‘duplicates’ array if it’s encountered again.
Syntax:
new Set([it]);
Example: In this example we are using above explained apporach.
Javascript
const str = "neveropen" ; const cSet = new Set(); const duplicates = []; for (let i = 0; i < str.length; i++) { const char = str[i]; if (cSet.has(char)) { if (!duplicates.includes(char)) { duplicates.push(char); } } else { cSet.add(char); } } if (duplicates.length > 0) { console.log( `The String ${str} has duplicate characters: ${duplicates.join( ", " )}`); } else { console.log(`The String ${str} has all unique characters`); }; |
The String neveropen has duplicate characters: e, G, k, s
Approach 3: Without using Extra Data Structure
In this approach, we are using bit manipulation to find the check for repeated characters in a string. we use a bit vector (checker) to efficiently find and collect duplicate characters in a string. It iterates through the string, tracking character occurrences with bitwise operations and stores duplicates in an array
Syntax:
if ((checker & (1 << bitAtIndex)) > 0) {
if (!duplicates.includes(str[i])) {
duplicates.push(str[i]);
}
} else {
checker |= (1 << bitAtIndex);
};
Example: In this example we are using above-explained apporach.
Javascript
function findDuplicateChar(str) { let checker = 0; const duplicates = []; for (let i = 0; i < str.length; i++) { const bitAtIndex = str.charCodeAt(i) - 'a' .charCodeAt(0); if ((checker & (1 << bitAtIndex)) > 0) { if (!duplicates.includes(str[i])) { duplicates.push(str[i]); } } else { checker |= (1 << bitAtIndex); } } return duplicates; } const str = "neveropen" ; const duplicateCharacters = findDuplicateChar(str); if (duplicateCharacters.length > 0) { console.log( "The String ${str} has duplicate characters:" , duplicateCharacters.join( ", " )); } else { console.log( `The String ${str} has all unique characters`); }; |
The String ${str} has duplicate characters: e, G, k, s