forked from trekhleb/javascript-algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added palindromeCheck (trekhleb#806)
* added readme * added readme * adding palindromeCheck * adjusted README Co-authored-by: Oleksii Trekhleb <trehleb@gmail.com>
- Loading branch information
1 parent
b4b5110
commit ea28788
Showing
4 changed files
with
57 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Palindrome Check | ||
|
||
A Palindrome is a string that reads the same forwards and backwards. | ||
This means that the second half of the string is the reverse of the | ||
first half. | ||
|
||
## Examples | ||
|
||
The following are palindromes (thus would return TRUE): | ||
|
||
- "a" | ||
- "pop" -> p + o + p | ||
- "deed" -> de + ed | ||
- "kayak" -> ka + y + ak | ||
- "racecar" -> rac + e + car | ||
|
||
The following are NOT palindromes (thus would return FALSE): | ||
|
||
- "rad" | ||
- "dodo" | ||
- "polo" | ||
|
||
## References | ||
|
||
[GeeksforGeeks - Check if a number is Palindrome](https://www.geeksforgeeks.org/check-if-a-number-is-palindrome/) |
14 changes: 14 additions & 0 deletions
14
src/algorithms/string/palindrome-check/__test__/palindromeCheck.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import palindromeCheck from '../palindromeCheck'; | ||
|
||
describe('palindromeCheck', () => { | ||
it('should return whether or not the string is a palindrome', () => { | ||
expect(palindromeCheck('a')).toBe(true); | ||
expect(palindromeCheck('pop')).toBe(true); | ||
expect(palindromeCheck('deed')).toBe(true); | ||
expect(palindromeCheck('kayak')).toBe(true); | ||
expect(palindromeCheck('racecar')).toBe(true); | ||
expect(palindromeCheck('rad')).toBe(false); | ||
expect(palindromeCheck('dodo')).toBe(false); | ||
expect(palindromeCheck('polo')).toBe(false); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
/** | ||
* @param {string} string | ||
* @return {boolean} | ||
*/ | ||
|
||
export default function palindromeCheck(string) { | ||
let left = 0; | ||
let right = string.length - 1; | ||
while (left < right) { | ||
if (string[left] !== string[right]) { | ||
return false; | ||
} | ||
left += 1; | ||
right -= 1; | ||
} | ||
return true; | ||
} |