Palindrome and Reverse a String Problems (JavaScript, Python)Reverse and Add: find a palindromeMake palindrome finder-builder function fasterString reverse functionRosalind string algorithm problemsComparing a string using a stackTest if a string is a palindromeReverse string in JavaScript without using reverse()Reverse vowels in a stringReverse complement of a DNA string
How to persuade players not to cheat?
Which Formula One races did Scuderia Ferrari not take part in?
What does it take to make metal music?
In what way were Renaissance battles like chess matches?
Instant coffee melts like chocolate
Why the real and imaginary parts of a complex analytic function are not independent?
How to check if python package is latest version programmatically?
A lightweight version of std::shared_ptr<T>
Cannot upgrade 19.04 to 19.10 because of held back packages: libsnmp30
Potential Postdoc advisor giving exams (assignment) as part of hiring process
Has an engineer called Trevor Jackson invented a revolutionary battery allowing for a car range of 1500 miles?
Would rocket engine exhaust create pockets of gas in space which could hinder further space exploration?
Modification of a public property - LWC
How can I prevent side-channel attacks against authentication?
What do you call the movement you do by car within a local distance?
Is a turbocharged piston aircraft the same thing as turboprop?
Is this bible in Koine Greek?
Gold plating versus Silver plating for electrical contacts?
What potential problems are there with dumping dex in bard build?
ASCII Pumpkin Carving
Hikers in Halloween
Have supporters of "right-wing populist" parties in Europe explained why they trust Trump?
Cheat at Rock-Paper-Scissors-Lizard-Spock
Is an SSH key with a passphrase a 2FA?
Palindrome and Reverse a String Problems (JavaScript, Python)
Reverse and Add: find a palindromeMake palindrome finder-builder function fasterString reverse functionRosalind string algorithm problemsComparing a string using a stackTest if a string is a palindromeReverse string in JavaScript without using reverse()Reverse vowels in a stringReverse complement of a DNA string
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;
$begingroup$
Problem 1
Given a string, the task is to reverse the string and return a reversed string.
Problem 2
Given a string, return true if the string is a palindrome or false if it is not.
Code
Just for practicing, I've implemented reverse string and palindrome problems using JavaScript and Python. If you'd like to review the codes and provide any change/improvement recommendations, please do so and I appreciate that.
JavaScript
// Problem 1
// Given a string, return true if the string is a palindrome
// or false if it is not. Palindromes are strings that
// form the same word if it is reversed. *Do* include spaces
// and punctuation in determining if the string is a palindrome.
// --- Examples:
// abba => true
// abc => false
// Problem 2
// Given a string, return a new string with the reversed
// order of characters
// --- Examples
// apple => leppa
// hello => olleh
// Greetings! => !sgniteerG
// This method tests if the string is a palindrome using four reverse string functions
function check_palindrome(original_string)
original_string = original_string.toLowerCase();
let reversed_string_1 = reverse_string_built_in(original_string);
let reversed_string_2 = reverse_string_reduce(original_string);
let reversed_string_3 = reverse_string_for_of_loop(original_string);
let reversed_string_4 = reverse_string_negative_for_loop(original_string);
// If the original string is a palindrome
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
// This method is an slightly optimized version of checking for palindrome
function check_palindrome_optimized(original_string)
original_string = original_string.toLowerCase();
count = 0;
return original_string.split('').every((char, i) =>
count++;
if (count > Math.floor(original_string.length / 2))
return true
return char === original_string[original_string.length - i - 1];
);
// This method uses reverse() built in function
function reverse_string_built_in(original_string)
return original_string.split('').reverse().join('');
// This method uses for of loop
function reverse_string_for_of_loop(original_string)
let reversed_string = '';
for (let char of original_string)
reversed_string = char + reversed_string;
return reversed_string;
// Using negative for loop and contact
function reverse_string_negative_for_loop(original_string)
let reversed_string = '';
for (var i = original_string.length - 1; i >= 0; i--)
reversed_string = reversed_string.concat(original_string[i]);
return reversed_string;
//Using reduce() method
function reverse_string_reduce(original_string)
return original_string.split('').reduce((reversed_string, char) => char + reversed_string, '');
// Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar', 'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer'];
for (let word of words_array)
if (check_palindrome_optimized(word) === true && check_palindrome(word) === true)
console.log('🍏 "'.concat(word, '" is a palindrome!'));
else
console.log('🍎 "'.concat(word, '" is not a palindrome!'));
Python
def reverse_string(original_string):
'''
Returns a reversed string give a string
'''
reversed_string = ''
for char in original_string:
reversed_string = char + reversed_string
return reversed_string
def reverse_string_slice(original_string):
'''Returns a reversed string give a string'''
return original_string[::-1]
def check_palindrome(original_string):
'''Returns true if an input string is a palindrome'''
original_string = original_string.lower()
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
# Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar',
'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer']
delimiter = '-'*50
for word in words_array:
print(delimiter)
print(f'The reverse of "word" is "reverse_string(word)"')
if check_palindrome(word) == True:
print(f'🍏 "word" is a palindrome!')
else:
print(f'🍎 "word" is not a palindrome!')
Output
--------------------------------------------------
The reverse of "apple" is "elppa"
🍎 "apple" is not a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "abc1221cba" is "abc1221cba"
🍏 "abc1221cba" is a palindrome!
--------------------------------------------------
The reverse of "reviver" is "reviver"
🍏 "reviver" is a palindrome!
--------------------------------------------------
The reverse of "redivider" is "redivider"
🍏 "redivider" is a palindrome!
--------------------------------------------------
The reverse of "1736" is "6371"
🍎 "1736" is not a palindrome!
--------------------------------------------------
The reverse of "deified" is "deified"
🍏 "deified" is a palindrome!
--------------------------------------------------
The reverse of "Anna" is "annA"
🍏 "Anna" is a palindrome!
--------------------------------------------------
The reverse of "Able was I ere I saw Elba" is "ablE was I ere I saw elbA"
🍏 "Able was I ere I saw Elba" is a palindrome!
--------------------------------------------------
The reverse of "Madam, I'm Adam" is "madA m'I ,madaM"
🍎 "Madam, I'm Adam" is not a palindrome!
--------------------------------------------------
The reverse of "civic" is "civic"
🍏 "civic" is a palindrome!
--------------------------------------------------
The reverse of "RaDar" is "raDaR"
🍏 "RaDar" is a palindrome!
--------------------------------------------------
The reverse of "Never odd or even" is "neve ro ddo reveN"
🍎 "Never odd or even" is not a palindrome!
--------------------------------------------------
The reverse of "LeVeL" is "LeVeL"
🍏 "LeVeL" is a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "racecar" is "racecar"
🍏 "racecar" is a palindrome!
--------------------------------------------------
The reverse of "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is "doc no teid I .ssentaf a stneverp reven tsaf A .tnessid I :eton ,coD"
🍎 "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is not a palindrome!
--------------------------------------------------
The reverse of "redder" is "redder"
🍏 "redder" is a palindrome!
--------------------------------------------------
The reverse of "madam" is "madam"
🍏 "madam" is a palindrome!
--------------------------------------------------
The reverse of "1991" is "1991"
🍏 "1991" is a palindrome!
--------------------------------------------------
The reverse of "refer" is "refer"
🍏 "refer" is a palindrome!
python javascript beginner algorithm strings
$endgroup$
add a comment
|
$begingroup$
Problem 1
Given a string, the task is to reverse the string and return a reversed string.
Problem 2
Given a string, return true if the string is a palindrome or false if it is not.
Code
Just for practicing, I've implemented reverse string and palindrome problems using JavaScript and Python. If you'd like to review the codes and provide any change/improvement recommendations, please do so and I appreciate that.
JavaScript
// Problem 1
// Given a string, return true if the string is a palindrome
// or false if it is not. Palindromes are strings that
// form the same word if it is reversed. *Do* include spaces
// and punctuation in determining if the string is a palindrome.
// --- Examples:
// abba => true
// abc => false
// Problem 2
// Given a string, return a new string with the reversed
// order of characters
// --- Examples
// apple => leppa
// hello => olleh
// Greetings! => !sgniteerG
// This method tests if the string is a palindrome using four reverse string functions
function check_palindrome(original_string)
original_string = original_string.toLowerCase();
let reversed_string_1 = reverse_string_built_in(original_string);
let reversed_string_2 = reverse_string_reduce(original_string);
let reversed_string_3 = reverse_string_for_of_loop(original_string);
let reversed_string_4 = reverse_string_negative_for_loop(original_string);
// If the original string is a palindrome
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
// This method is an slightly optimized version of checking for palindrome
function check_palindrome_optimized(original_string)
original_string = original_string.toLowerCase();
count = 0;
return original_string.split('').every((char, i) =>
count++;
if (count > Math.floor(original_string.length / 2))
return true
return char === original_string[original_string.length - i - 1];
);
// This method uses reverse() built in function
function reverse_string_built_in(original_string)
return original_string.split('').reverse().join('');
// This method uses for of loop
function reverse_string_for_of_loop(original_string)
let reversed_string = '';
for (let char of original_string)
reversed_string = char + reversed_string;
return reversed_string;
// Using negative for loop and contact
function reverse_string_negative_for_loop(original_string)
let reversed_string = '';
for (var i = original_string.length - 1; i >= 0; i--)
reversed_string = reversed_string.concat(original_string[i]);
return reversed_string;
//Using reduce() method
function reverse_string_reduce(original_string)
return original_string.split('').reduce((reversed_string, char) => char + reversed_string, '');
// Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar', 'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer'];
for (let word of words_array)
if (check_palindrome_optimized(word) === true && check_palindrome(word) === true)
console.log('🍏 "'.concat(word, '" is a palindrome!'));
else
console.log('🍎 "'.concat(word, '" is not a palindrome!'));
Python
def reverse_string(original_string):
'''
Returns a reversed string give a string
'''
reversed_string = ''
for char in original_string:
reversed_string = char + reversed_string
return reversed_string
def reverse_string_slice(original_string):
'''Returns a reversed string give a string'''
return original_string[::-1]
def check_palindrome(original_string):
'''Returns true if an input string is a palindrome'''
original_string = original_string.lower()
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
# Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar',
'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer']
delimiter = '-'*50
for word in words_array:
print(delimiter)
print(f'The reverse of "word" is "reverse_string(word)"')
if check_palindrome(word) == True:
print(f'🍏 "word" is a palindrome!')
else:
print(f'🍎 "word" is not a palindrome!')
Output
--------------------------------------------------
The reverse of "apple" is "elppa"
🍎 "apple" is not a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "abc1221cba" is "abc1221cba"
🍏 "abc1221cba" is a palindrome!
--------------------------------------------------
The reverse of "reviver" is "reviver"
🍏 "reviver" is a palindrome!
--------------------------------------------------
The reverse of "redivider" is "redivider"
🍏 "redivider" is a palindrome!
--------------------------------------------------
The reverse of "1736" is "6371"
🍎 "1736" is not a palindrome!
--------------------------------------------------
The reverse of "deified" is "deified"
🍏 "deified" is a palindrome!
--------------------------------------------------
The reverse of "Anna" is "annA"
🍏 "Anna" is a palindrome!
--------------------------------------------------
The reverse of "Able was I ere I saw Elba" is "ablE was I ere I saw elbA"
🍏 "Able was I ere I saw Elba" is a palindrome!
--------------------------------------------------
The reverse of "Madam, I'm Adam" is "madA m'I ,madaM"
🍎 "Madam, I'm Adam" is not a palindrome!
--------------------------------------------------
The reverse of "civic" is "civic"
🍏 "civic" is a palindrome!
--------------------------------------------------
The reverse of "RaDar" is "raDaR"
🍏 "RaDar" is a palindrome!
--------------------------------------------------
The reverse of "Never odd or even" is "neve ro ddo reveN"
🍎 "Never odd or even" is not a palindrome!
--------------------------------------------------
The reverse of "LeVeL" is "LeVeL"
🍏 "LeVeL" is a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "racecar" is "racecar"
🍏 "racecar" is a palindrome!
--------------------------------------------------
The reverse of "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is "doc no teid I .ssentaf a stneverp reven tsaf A .tnessid I :eton ,coD"
🍎 "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is not a palindrome!
--------------------------------------------------
The reverse of "redder" is "redder"
🍏 "redder" is a palindrome!
--------------------------------------------------
The reverse of "madam" is "madam"
🍏 "madam" is a palindrome!
--------------------------------------------------
The reverse of "1991" is "1991"
🍏 "1991" is a palindrome!
--------------------------------------------------
The reverse of "refer" is "refer"
🍏 "refer" is a palindrome!
python javascript beginner algorithm strings
$endgroup$
1
$begingroup$
I presume, by "string" you mean "a sequence of Latin letters"? Otherwise, your problems would be much harder to solve. See this comment: stackoverflow.com/a/16776621/989121
$endgroup$
– georg
Oct 15 at 7:19
1
$begingroup$
Typically, punctuation is ignored when testing for palindromes, so "Doc, note:..." should return true. Likewise, "Never odd or even" should return true.
$endgroup$
– Baldrickk
Oct 15 at 10:47
1
$begingroup$
You could also go one step further here and add a reverse method to the String prototype (in js) so you could do: "test".reverse(). This keeps the code nicely encapsulated and re-usable. With it being on the prototype, every instance gets the same function.
$endgroup$
– Magrangs
Oct 15 at 15:16
add a comment
|
$begingroup$
Problem 1
Given a string, the task is to reverse the string and return a reversed string.
Problem 2
Given a string, return true if the string is a palindrome or false if it is not.
Code
Just for practicing, I've implemented reverse string and palindrome problems using JavaScript and Python. If you'd like to review the codes and provide any change/improvement recommendations, please do so and I appreciate that.
JavaScript
// Problem 1
// Given a string, return true if the string is a palindrome
// or false if it is not. Palindromes are strings that
// form the same word if it is reversed. *Do* include spaces
// and punctuation in determining if the string is a palindrome.
// --- Examples:
// abba => true
// abc => false
// Problem 2
// Given a string, return a new string with the reversed
// order of characters
// --- Examples
// apple => leppa
// hello => olleh
// Greetings! => !sgniteerG
// This method tests if the string is a palindrome using four reverse string functions
function check_palindrome(original_string)
original_string = original_string.toLowerCase();
let reversed_string_1 = reverse_string_built_in(original_string);
let reversed_string_2 = reverse_string_reduce(original_string);
let reversed_string_3 = reverse_string_for_of_loop(original_string);
let reversed_string_4 = reverse_string_negative_for_loop(original_string);
// If the original string is a palindrome
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
// This method is an slightly optimized version of checking for palindrome
function check_palindrome_optimized(original_string)
original_string = original_string.toLowerCase();
count = 0;
return original_string.split('').every((char, i) =>
count++;
if (count > Math.floor(original_string.length / 2))
return true
return char === original_string[original_string.length - i - 1];
);
// This method uses reverse() built in function
function reverse_string_built_in(original_string)
return original_string.split('').reverse().join('');
// This method uses for of loop
function reverse_string_for_of_loop(original_string)
let reversed_string = '';
for (let char of original_string)
reversed_string = char + reversed_string;
return reversed_string;
// Using negative for loop and contact
function reverse_string_negative_for_loop(original_string)
let reversed_string = '';
for (var i = original_string.length - 1; i >= 0; i--)
reversed_string = reversed_string.concat(original_string[i]);
return reversed_string;
//Using reduce() method
function reverse_string_reduce(original_string)
return original_string.split('').reduce((reversed_string, char) => char + reversed_string, '');
// Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar', 'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer'];
for (let word of words_array)
if (check_palindrome_optimized(word) === true && check_palindrome(word) === true)
console.log('🍏 "'.concat(word, '" is a palindrome!'));
else
console.log('🍎 "'.concat(word, '" is not a palindrome!'));
Python
def reverse_string(original_string):
'''
Returns a reversed string give a string
'''
reversed_string = ''
for char in original_string:
reversed_string = char + reversed_string
return reversed_string
def reverse_string_slice(original_string):
'''Returns a reversed string give a string'''
return original_string[::-1]
def check_palindrome(original_string):
'''Returns true if an input string is a palindrome'''
original_string = original_string.lower()
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
# Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar',
'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer']
delimiter = '-'*50
for word in words_array:
print(delimiter)
print(f'The reverse of "word" is "reverse_string(word)"')
if check_palindrome(word) == True:
print(f'🍏 "word" is a palindrome!')
else:
print(f'🍎 "word" is not a palindrome!')
Output
--------------------------------------------------
The reverse of "apple" is "elppa"
🍎 "apple" is not a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "abc1221cba" is "abc1221cba"
🍏 "abc1221cba" is a palindrome!
--------------------------------------------------
The reverse of "reviver" is "reviver"
🍏 "reviver" is a palindrome!
--------------------------------------------------
The reverse of "redivider" is "redivider"
🍏 "redivider" is a palindrome!
--------------------------------------------------
The reverse of "1736" is "6371"
🍎 "1736" is not a palindrome!
--------------------------------------------------
The reverse of "deified" is "deified"
🍏 "deified" is a palindrome!
--------------------------------------------------
The reverse of "Anna" is "annA"
🍏 "Anna" is a palindrome!
--------------------------------------------------
The reverse of "Able was I ere I saw Elba" is "ablE was I ere I saw elbA"
🍏 "Able was I ere I saw Elba" is a palindrome!
--------------------------------------------------
The reverse of "Madam, I'm Adam" is "madA m'I ,madaM"
🍎 "Madam, I'm Adam" is not a palindrome!
--------------------------------------------------
The reverse of "civic" is "civic"
🍏 "civic" is a palindrome!
--------------------------------------------------
The reverse of "RaDar" is "raDaR"
🍏 "RaDar" is a palindrome!
--------------------------------------------------
The reverse of "Never odd or even" is "neve ro ddo reveN"
🍎 "Never odd or even" is not a palindrome!
--------------------------------------------------
The reverse of "LeVeL" is "LeVeL"
🍏 "LeVeL" is a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "racecar" is "racecar"
🍏 "racecar" is a palindrome!
--------------------------------------------------
The reverse of "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is "doc no teid I .ssentaf a stneverp reven tsaf A .tnessid I :eton ,coD"
🍎 "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is not a palindrome!
--------------------------------------------------
The reverse of "redder" is "redder"
🍏 "redder" is a palindrome!
--------------------------------------------------
The reverse of "madam" is "madam"
🍏 "madam" is a palindrome!
--------------------------------------------------
The reverse of "1991" is "1991"
🍏 "1991" is a palindrome!
--------------------------------------------------
The reverse of "refer" is "refer"
🍏 "refer" is a palindrome!
python javascript beginner algorithm strings
$endgroup$
Problem 1
Given a string, the task is to reverse the string and return a reversed string.
Problem 2
Given a string, return true if the string is a palindrome or false if it is not.
Code
Just for practicing, I've implemented reverse string and palindrome problems using JavaScript and Python. If you'd like to review the codes and provide any change/improvement recommendations, please do so and I appreciate that.
JavaScript
// Problem 1
// Given a string, return true if the string is a palindrome
// or false if it is not. Palindromes are strings that
// form the same word if it is reversed. *Do* include spaces
// and punctuation in determining if the string is a palindrome.
// --- Examples:
// abba => true
// abc => false
// Problem 2
// Given a string, return a new string with the reversed
// order of characters
// --- Examples
// apple => leppa
// hello => olleh
// Greetings! => !sgniteerG
// This method tests if the string is a palindrome using four reverse string functions
function check_palindrome(original_string)
original_string = original_string.toLowerCase();
let reversed_string_1 = reverse_string_built_in(original_string);
let reversed_string_2 = reverse_string_reduce(original_string);
let reversed_string_3 = reverse_string_for_of_loop(original_string);
let reversed_string_4 = reverse_string_negative_for_loop(original_string);
// If the original string is a palindrome
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
// This method is an slightly optimized version of checking for palindrome
function check_palindrome_optimized(original_string)
original_string = original_string.toLowerCase();
count = 0;
return original_string.split('').every((char, i) =>
count++;
if (count > Math.floor(original_string.length / 2))
return true
return char === original_string[original_string.length - i - 1];
);
// This method uses reverse() built in function
function reverse_string_built_in(original_string)
return original_string.split('').reverse().join('');
// This method uses for of loop
function reverse_string_for_of_loop(original_string)
let reversed_string = '';
for (let char of original_string)
reversed_string = char + reversed_string;
return reversed_string;
// Using negative for loop and contact
function reverse_string_negative_for_loop(original_string)
let reversed_string = '';
for (var i = original_string.length - 1; i >= 0; i--)
reversed_string = reversed_string.concat(original_string[i]);
return reversed_string;
//Using reduce() method
function reverse_string_reduce(original_string)
return original_string.split('').reduce((reversed_string, char) => char + reversed_string, '');
// Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar', 'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer'];
for (let word of words_array)
if (check_palindrome_optimized(word) === true && check_palindrome(word) === true)
console.log('🍏 "'.concat(word, '" is a palindrome!'));
else
console.log('🍎 "'.concat(word, '" is not a palindrome!'));
Python
def reverse_string(original_string):
'''
Returns a reversed string give a string
'''
reversed_string = ''
for char in original_string:
reversed_string = char + reversed_string
return reversed_string
def reverse_string_slice(original_string):
'''Returns a reversed string give a string'''
return original_string[::-1]
def check_palindrome(original_string):
'''Returns true if an input string is a palindrome'''
original_string = original_string.lower()
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
# Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar',
'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer']
delimiter = '-'*50
for word in words_array:
print(delimiter)
print(f'The reverse of "word" is "reverse_string(word)"')
if check_palindrome(word) == True:
print(f'🍏 "word" is a palindrome!')
else:
print(f'🍎 "word" is not a palindrome!')
Output
--------------------------------------------------
The reverse of "apple" is "elppa"
🍎 "apple" is not a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "abc1221cba" is "abc1221cba"
🍏 "abc1221cba" is a palindrome!
--------------------------------------------------
The reverse of "reviver" is "reviver"
🍏 "reviver" is a palindrome!
--------------------------------------------------
The reverse of "redivider" is "redivider"
🍏 "redivider" is a palindrome!
--------------------------------------------------
The reverse of "1736" is "6371"
🍎 "1736" is not a palindrome!
--------------------------------------------------
The reverse of "deified" is "deified"
🍏 "deified" is a palindrome!
--------------------------------------------------
The reverse of "Anna" is "annA"
🍏 "Anna" is a palindrome!
--------------------------------------------------
The reverse of "Able was I ere I saw Elba" is "ablE was I ere I saw elbA"
🍏 "Able was I ere I saw Elba" is a palindrome!
--------------------------------------------------
The reverse of "Madam, I'm Adam" is "madA m'I ,madaM"
🍎 "Madam, I'm Adam" is not a palindrome!
--------------------------------------------------
The reverse of "civic" is "civic"
🍏 "civic" is a palindrome!
--------------------------------------------------
The reverse of "RaDar" is "raDaR"
🍏 "RaDar" is a palindrome!
--------------------------------------------------
The reverse of "Never odd or even" is "neve ro ddo reveN"
🍎 "Never odd or even" is not a palindrome!
--------------------------------------------------
The reverse of "LeVeL" is "LeVeL"
🍏 "LeVeL" is a palindrome!
--------------------------------------------------
The reverse of "kayak" is "kayak"
🍏 "kayak" is a palindrome!
--------------------------------------------------
The reverse of "racecar" is "racecar"
🍏 "racecar" is a palindrome!
--------------------------------------------------
The reverse of "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is "doc no teid I .ssentaf a stneverp reven tsaf A .tnessid I :eton ,coD"
🍎 "Doc, note: I dissent. A fast never prevents a fatness. I diet on cod" is not a palindrome!
--------------------------------------------------
The reverse of "redder" is "redder"
🍏 "redder" is a palindrome!
--------------------------------------------------
The reverse of "madam" is "madam"
🍏 "madam" is a palindrome!
--------------------------------------------------
The reverse of "1991" is "1991"
🍏 "1991" is a palindrome!
--------------------------------------------------
The reverse of "refer" is "refer"
🍏 "refer" is a palindrome!
// Problem 1
// Given a string, return true if the string is a palindrome
// or false if it is not. Palindromes are strings that
// form the same word if it is reversed. *Do* include spaces
// and punctuation in determining if the string is a palindrome.
// --- Examples:
// abba => true
// abc => false
// Problem 2
// Given a string, return a new string with the reversed
// order of characters
// --- Examples
// apple => leppa
// hello => olleh
// Greetings! => !sgniteerG
// This method tests if the string is a palindrome using four reverse string functions
function check_palindrome(original_string)
original_string = original_string.toLowerCase();
let reversed_string_1 = reverse_string_built_in(original_string);
let reversed_string_2 = reverse_string_reduce(original_string);
let reversed_string_3 = reverse_string_for_of_loop(original_string);
let reversed_string_4 = reverse_string_negative_for_loop(original_string);
// If the original string is a palindrome
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
// This method is an slightly optimized version of checking for palindrome
function check_palindrome_optimized(original_string)
original_string = original_string.toLowerCase();
count = 0;
return original_string.split('').every((char, i) =>
count++;
if (count > Math.floor(original_string.length / 2))
return true
return char === original_string[original_string.length - i - 1];
);
// This method uses reverse() built in function
function reverse_string_built_in(original_string)
return original_string.split('').reverse().join('');
// This method uses for of loop
function reverse_string_for_of_loop(original_string)
let reversed_string = '';
for (let char of original_string)
reversed_string = char + reversed_string;
return reversed_string;
// Using negative for loop and contact
function reverse_string_negative_for_loop(original_string)
let reversed_string = '';
for (var i = original_string.length - 1; i >= 0; i--)
reversed_string = reversed_string.concat(original_string[i]);
return reversed_string;
//Using reduce() method
function reverse_string_reduce(original_string)
return original_string.split('').reduce((reversed_string, char) => char + reversed_string, '');
// Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar', 'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer'];
for (let word of words_array)
if (check_palindrome_optimized(word) === true && check_palindrome(word) === true)
console.log('🍏 "'.concat(word, '" is a palindrome!'));
else
console.log('🍎 "'.concat(word, '" is not a palindrome!'));
// Problem 1
// Given a string, return true if the string is a palindrome
// or false if it is not. Palindromes are strings that
// form the same word if it is reversed. *Do* include spaces
// and punctuation in determining if the string is a palindrome.
// --- Examples:
// abba => true
// abc => false
// Problem 2
// Given a string, return a new string with the reversed
// order of characters
// --- Examples
// apple => leppa
// hello => olleh
// Greetings! => !sgniteerG
// This method tests if the string is a palindrome using four reverse string functions
function check_palindrome(original_string)
original_string = original_string.toLowerCase();
let reversed_string_1 = reverse_string_built_in(original_string);
let reversed_string_2 = reverse_string_reduce(original_string);
let reversed_string_3 = reverse_string_for_of_loop(original_string);
let reversed_string_4 = reverse_string_negative_for_loop(original_string);
// If the original string is a palindrome
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
// This method is an slightly optimized version of checking for palindrome
function check_palindrome_optimized(original_string)
original_string = original_string.toLowerCase();
count = 0;
return original_string.split('').every((char, i) =>
count++;
if (count > Math.floor(original_string.length / 2))
return true
return char === original_string[original_string.length - i - 1];
);
// This method uses reverse() built in function
function reverse_string_built_in(original_string)
return original_string.split('').reverse().join('');
// This method uses for of loop
function reverse_string_for_of_loop(original_string)
let reversed_string = '';
for (let char of original_string)
reversed_string = char + reversed_string;
return reversed_string;
// Using negative for loop and contact
function reverse_string_negative_for_loop(original_string)
let reversed_string = '';
for (var i = original_string.length - 1; i >= 0; i--)
reversed_string = reversed_string.concat(original_string[i]);
return reversed_string;
//Using reduce() method
function reverse_string_reduce(original_string)
return original_string.split('').reduce((reversed_string, char) => char + reversed_string, '');
// Here, we are testing our palindrome words
words_array = ['apple', 'kayak', 'abc1221cba', 'reviver', 'redivider', '1736', 'deified', 'Anna', 'Able was I ere I saw Elba', "Madam, I'm Adam", 'civic', 'RaDar', 'Never odd or even', 'LeVeL', 'kayak', 'racecar', 'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod', 'redder', 'madam', '1991', 'refer'];
for (let word of words_array)
if (check_palindrome_optimized(word) === true && check_palindrome(word) === true)
console.log('🍏 "'.concat(word, '" is a palindrome!'));
else
console.log('🍎 "'.concat(word, '" is not a palindrome!'));
python javascript beginner algorithm strings
python javascript beginner algorithm strings
edited Oct 14 at 17:14
Emma
asked Oct 14 at 15:33
EmmaEmma
8512 gold badges2 silver badges21 bronze badges
8512 gold badges2 silver badges21 bronze badges
1
$begingroup$
I presume, by "string" you mean "a sequence of Latin letters"? Otherwise, your problems would be much harder to solve. See this comment: stackoverflow.com/a/16776621/989121
$endgroup$
– georg
Oct 15 at 7:19
1
$begingroup$
Typically, punctuation is ignored when testing for palindromes, so "Doc, note:..." should return true. Likewise, "Never odd or even" should return true.
$endgroup$
– Baldrickk
Oct 15 at 10:47
1
$begingroup$
You could also go one step further here and add a reverse method to the String prototype (in js) so you could do: "test".reverse(). This keeps the code nicely encapsulated and re-usable. With it being on the prototype, every instance gets the same function.
$endgroup$
– Magrangs
Oct 15 at 15:16
add a comment
|
1
$begingroup$
I presume, by "string" you mean "a sequence of Latin letters"? Otherwise, your problems would be much harder to solve. See this comment: stackoverflow.com/a/16776621/989121
$endgroup$
– georg
Oct 15 at 7:19
1
$begingroup$
Typically, punctuation is ignored when testing for palindromes, so "Doc, note:..." should return true. Likewise, "Never odd or even" should return true.
$endgroup$
– Baldrickk
Oct 15 at 10:47
1
$begingroup$
You could also go one step further here and add a reverse method to the String prototype (in js) so you could do: "test".reverse(). This keeps the code nicely encapsulated and re-usable. With it being on the prototype, every instance gets the same function.
$endgroup$
– Magrangs
Oct 15 at 15:16
1
1
$begingroup$
I presume, by "string" you mean "a sequence of Latin letters"? Otherwise, your problems would be much harder to solve. See this comment: stackoverflow.com/a/16776621/989121
$endgroup$
– georg
Oct 15 at 7:19
$begingroup$
I presume, by "string" you mean "a sequence of Latin letters"? Otherwise, your problems would be much harder to solve. See this comment: stackoverflow.com/a/16776621/989121
$endgroup$
– georg
Oct 15 at 7:19
1
1
$begingroup$
Typically, punctuation is ignored when testing for palindromes, so "Doc, note:..." should return true. Likewise, "Never odd or even" should return true.
$endgroup$
– Baldrickk
Oct 15 at 10:47
$begingroup$
Typically, punctuation is ignored when testing for palindromes, so "Doc, note:..." should return true. Likewise, "Never odd or even" should return true.
$endgroup$
– Baldrickk
Oct 15 at 10:47
1
1
$begingroup$
You could also go one step further here and add a reverse method to the String prototype (in js) so you could do: "test".reverse(). This keeps the code nicely encapsulated and re-usable. With it being on the prototype, every instance gets the same function.
$endgroup$
– Magrangs
Oct 15 at 15:16
$begingroup$
You could also go one step further here and add a reverse method to the String prototype (in js) so you could do: "test".reverse(). This keeps the code nicely encapsulated and re-usable. With it being on the prototype, every instance gets the same function.
$endgroup$
– Magrangs
Oct 15 at 15:16
add a comment
|
2 Answers
2
active
oldest
votes
$begingroup$
Boolean expression returns
This applies to both your Javascript and Python implementations:
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
Your expression is already a boolean; you don't need an if
. In other words,
return reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string
Boolean comparison
if check_palindrome(word) == True:
should simply be
if check_palindrome(word):
Also, the convention is that boolean-valued functions are named like is_palindrome
.
words_array
First of all: This isn't an array, because Python doesn't have those. It's a list. Second, just call it words
- usually it's not useful to include the type of a variable in its name. Finally: you shouldn't even be using a list, because you won't be mutating (modifying) it; use a tuple
(in parens, not brackets).
$endgroup$
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context ofnumpy
.
$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
add a comment
|
$begingroup$
In Python, your check_palindrome
function can be made more efficient and pythonic:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
return all(r == o for r, o in zip(reversed(original_string), original_string[:len(original_string)//2]))
This only iterates over half of the characters as opposed to your version. You could also use islice from itertools, for example:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
original = islice(original_string, len(original_string) // 2)
return all(r == o for r, o in zip(reversed(original_string), original))
Also note that docstrings should be double quoted.
$endgroup$
1
$begingroup$
original_string[::len(original_string)//2]
should beoriginal_string[:len(original_string)//2]
.
$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
add a comment
|
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f230709%2fpalindrome-and-reverse-a-string-problems-javascript-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Boolean expression returns
This applies to both your Javascript and Python implementations:
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
Your expression is already a boolean; you don't need an if
. In other words,
return reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string
Boolean comparison
if check_palindrome(word) == True:
should simply be
if check_palindrome(word):
Also, the convention is that boolean-valued functions are named like is_palindrome
.
words_array
First of all: This isn't an array, because Python doesn't have those. It's a list. Second, just call it words
- usually it's not useful to include the type of a variable in its name. Finally: you shouldn't even be using a list, because you won't be mutating (modifying) it; use a tuple
(in parens, not brackets).
$endgroup$
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context ofnumpy
.
$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
add a comment
|
$begingroup$
Boolean expression returns
This applies to both your Javascript and Python implementations:
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
Your expression is already a boolean; you don't need an if
. In other words,
return reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string
Boolean comparison
if check_palindrome(word) == True:
should simply be
if check_palindrome(word):
Also, the convention is that boolean-valued functions are named like is_palindrome
.
words_array
First of all: This isn't an array, because Python doesn't have those. It's a list. Second, just call it words
- usually it's not useful to include the type of a variable in its name. Finally: you shouldn't even be using a list, because you won't be mutating (modifying) it; use a tuple
(in parens, not brackets).
$endgroup$
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context ofnumpy
.
$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
add a comment
|
$begingroup$
Boolean expression returns
This applies to both your Javascript and Python implementations:
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
Your expression is already a boolean; you don't need an if
. In other words,
return reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string
Boolean comparison
if check_palindrome(word) == True:
should simply be
if check_palindrome(word):
Also, the convention is that boolean-valued functions are named like is_palindrome
.
words_array
First of all: This isn't an array, because Python doesn't have those. It's a list. Second, just call it words
- usually it's not useful to include the type of a variable in its name. Finally: you shouldn't even be using a list, because you won't be mutating (modifying) it; use a tuple
(in parens, not brackets).
$endgroup$
Boolean expression returns
This applies to both your Javascript and Python implementations:
if (reversed_string_1 === original_string && reversed_string_2 === original_string && reversed_string_3 === original_string && reversed_string_4 === original_string)
return true;
// If the original string is not a palindrome
else
return false;
if reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string:
return True
return False
Your expression is already a boolean; you don't need an if
. In other words,
return reverse_string_slice(original_string) == original_string and reverse_string(original_string) == original_string
Boolean comparison
if check_palindrome(word) == True:
should simply be
if check_palindrome(word):
Also, the convention is that boolean-valued functions are named like is_palindrome
.
words_array
First of all: This isn't an array, because Python doesn't have those. It's a list. Second, just call it words
- usually it's not useful to include the type of a variable in its name. Finally: you shouldn't even be using a list, because you won't be mutating (modifying) it; use a tuple
(in parens, not brackets).
answered Oct 14 at 17:20
ReinderienReinderien
12.6k22 silver badges50 bronze badges
12.6k22 silver badges50 bronze badges
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context ofnumpy
.
$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
add a comment
|
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context ofnumpy
.
$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context of
numpy
.$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
Technically, Python does have arrays. However, they are rarely used. The term "array" is also used in the context of
numpy
.$endgroup$
– GZ0
Oct 15 at 1:56
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
$begingroup$
That's fair. It's more accurate to say that Python has arrays, but they aren't first-class.
$endgroup$
– Reinderien
Oct 15 at 2:17
add a comment
|
$begingroup$
In Python, your check_palindrome
function can be made more efficient and pythonic:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
return all(r == o for r, o in zip(reversed(original_string), original_string[:len(original_string)//2]))
This only iterates over half of the characters as opposed to your version. You could also use islice from itertools, for example:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
original = islice(original_string, len(original_string) // 2)
return all(r == o for r, o in zip(reversed(original_string), original))
Also note that docstrings should be double quoted.
$endgroup$
1
$begingroup$
original_string[::len(original_string)//2]
should beoriginal_string[:len(original_string)//2]
.
$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
add a comment
|
$begingroup$
In Python, your check_palindrome
function can be made more efficient and pythonic:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
return all(r == o for r, o in zip(reversed(original_string), original_string[:len(original_string)//2]))
This only iterates over half of the characters as opposed to your version. You could also use islice from itertools, for example:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
original = islice(original_string, len(original_string) // 2)
return all(r == o for r, o in zip(reversed(original_string), original))
Also note that docstrings should be double quoted.
$endgroup$
1
$begingroup$
original_string[::len(original_string)//2]
should beoriginal_string[:len(original_string)//2]
.
$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
add a comment
|
$begingroup$
In Python, your check_palindrome
function can be made more efficient and pythonic:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
return all(r == o for r, o in zip(reversed(original_string), original_string[:len(original_string)//2]))
This only iterates over half of the characters as opposed to your version. You could also use islice from itertools, for example:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
original = islice(original_string, len(original_string) // 2)
return all(r == o for r, o in zip(reversed(original_string), original))
Also note that docstrings should be double quoted.
$endgroup$
In Python, your check_palindrome
function can be made more efficient and pythonic:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
return all(r == o for r, o in zip(reversed(original_string), original_string[:len(original_string)//2]))
This only iterates over half of the characters as opposed to your version. You could also use islice from itertools, for example:
def check_palindrome(original_string):
"""Returns true if an input string is a palindrome"""
original_string = original_string.lower()
original = islice(original_string, len(original_string) // 2)
return all(r == o for r, o in zip(reversed(original_string), original))
Also note that docstrings should be double quoted.
edited Oct 15 at 2:01
answered Oct 14 at 23:05
Daniel MesejoDaniel Mesejo
1414 bronze badges
1414 bronze badges
1
$begingroup$
original_string[::len(original_string)//2]
should beoriginal_string[:len(original_string)//2]
.
$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
add a comment
|
1
$begingroup$
original_string[::len(original_string)//2]
should beoriginal_string[:len(original_string)//2]
.
$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
1
1
$begingroup$
original_string[::len(original_string)//2]
should be original_string[:len(original_string)//2]
.$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
original_string[::len(original_string)//2]
should be original_string[:len(original_string)//2]
.$endgroup$
– GZ0
Oct 15 at 1:59
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
$begingroup$
@GZ0 Thanks for the catch.
$endgroup$
– Daniel Mesejo
Oct 15 at 2:02
add a comment
|
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f230709%2fpalindrome-and-reverse-a-string-problems-javascript-python%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
$begingroup$
I presume, by "string" you mean "a sequence of Latin letters"? Otherwise, your problems would be much harder to solve. See this comment: stackoverflow.com/a/16776621/989121
$endgroup$
– georg
Oct 15 at 7:19
1
$begingroup$
Typically, punctuation is ignored when testing for palindromes, so "Doc, note:..." should return true. Likewise, "Never odd or even" should return true.
$endgroup$
– Baldrickk
Oct 15 at 10:47
1
$begingroup$
You could also go one step further here and add a reverse method to the String prototype (in js) so you could do: "test".reverse(). This keeps the code nicely encapsulated and re-usable. With it being on the prototype, every instance gets the same function.
$endgroup$
– Magrangs
Oct 15 at 15:16