-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpalindrome.ts
50 lines (42 loc) · 1.41 KB
/
palindrome.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function optimzedPalindromeChecker(input: string): boolean {
const maxIndex = Math.floor(input.length / 2);
for (let i = 0; i < maxIndex; i++) {
if (input[i] !== input[input.length - 1 - i]) {
return false;
}
}
return true;
}
function unoptimizedPalindromeChecker(input: string): boolean {
if (input === reverseWordWithoutBuiltin(input)) {
return true;
}
return false;
}
// Ini kayaknya dulu gue bikin gini. Aneh juga sih pas gue baca ulang.
function reverseWord(input: string): string {
const inputArray = input.split("");
const arrayLength = inputArray.length;
const resultArray = Array.from({ length: arrayLength });
inputArray.forEach((char, index) => {
resultArray[arrayLength - 1 - index] = char;
});
const resultString = resultArray.join("");
return resultString;
}
function reverseWordWithBuiltin(input: string): string {
return input.split("").reverse().join();
}
function reverseWordWithoutBuiltin(input: string): string {
let res = "";
for (let i = 0; i < input.length; i++) {
res = res + input[input.length - 1 - i];
}
return res;
}
// test:
console.log(optimzedPalindromeChecker("asad saleh umar") === false);
console.log(optimzedPalindromeChecker("racecar") === true);
console.log(optimzedPalindromeChecker("asaddasa") === true);
console.log(optimzedPalindromeChecker("abccccccccba") === true);
console.log(optimzedPalindromeChecker("abbbaaabbba") === true);