Strings are fundamental data structures in programming, and many algorithms exist for manipulating and analyzing strings.

A palindrome is a string that reads the same backwards and forwards. Here is how to check for palindromes:
1function isPalindrome(str) {
2 const reversed = str.split('').reverse().join('');
3 return str === reversed;
4}
Two strings are anagrams if they contain the same characters in different orders. To check:
1function isAnagram(str1, str2) {
2 return str1.split('').sort().join('') ===
3 str2.split('').sort().join('');
4}
To find the longest common substring between two strings:
1function longestCommonSubstring(str1, str2) {
2 const lengths = Array.from({ length: str1.length + 1 }, () => Array(str2.length + 1).fill(0));
3 let longest = 0;
4 let longestIdx = 0;
5 for (let i = 1; i <= str1.length; i++) {
6 for (let j = 1; j <= str2.length; j++) {
7 if (str1.charAt(i - 1) === str2.charAt(j - 1)) {
8 lengths[i][j] = lengths[i - 1][j - 1] + 1;
9 if (lengths[i][j] > longest) {
10 longest = lengths[i][j];
11 longestIdx = i - 1;
12 }
13 }
14 }
15 }
16 return str1.substring(longestIdx - longest + 1, longestIdx + 1);
17}
To reverse a string:
1function reverseString(str) {
2 return str.split('').reverse().join('');
3}
This covers some common string algorithms like palindromes, anagrams, longest common substring, and reversal. Strings are core to many domain-specific algorithms as well.
xxxxxxxxxx
37
console.log(reverseString("hello")); // "olleh"
function isPalindrome(str) {
const reversed = str.split('').reverse().join('');
return str === reversed;
}
​
function isAnagram(str1, str2) {
return str1.split('').sort().join('') ===
str2.split('').sort().join('');
}
​
function longestCommonSubstring(str1, str2) {
const lengths = Array.from({ length: str1.length + 1 }, () => Array(str2.length + 1).fill(0));
let longest = 0;
let longestIdx = 0;
for (let i = 1; i <= str1.length; i++) {
for (let j = 1; j <= str2.length; j++) {
if (str1.charAt(i - 1) === str2.charAt(j - 1)) {
lengths[i][j] = lengths[i - 1][j - 1] + 1;
if (lengths[i][j] > longest) {
longest = lengths[i][j];
longestIdx = i - 1;
}
}
}
}
return str1.substring(longestIdx - longest + 1, longestIdx + 1);
}
​
function reverseString(str) {
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment