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;









4














$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!









share|improve this question












$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


















4














$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!









share|improve this question












$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














4












4








4


1



$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!









share|improve this question












$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






share|improve this question
















share|improve this question













share|improve this question




share|improve this question








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













  • 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











2 Answers
2






active

oldest

votes


















9
















$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).






share|improve this answer










$endgroup$














  • $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


















4
















$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.






share|improve this answer












$endgroup$










  • 1




    $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












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
);



);














draft saved

draft discarded
















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









9
















$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).






share|improve this answer










$endgroup$














  • $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















9
















$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).






share|improve this answer










$endgroup$














  • $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













9














9










9







$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).






share|improve this answer










$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).







share|improve this answer













share|improve this answer




share|improve this answer










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 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$
    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$
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













4
















$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.






share|improve this answer












$endgroup$










  • 1




    $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















4
















$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.






share|improve this answer












$endgroup$










  • 1




    $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













4














4










4







$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.






share|improve this answer












$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.







share|improve this answer















share|improve this answer




share|improve this answer








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 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












  • 1




    $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







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


















draft saved

draft discarded















































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.




draft saved


draft discarded














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





















































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









Popular posts from this blog

Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

Tom Holland Mục lục Đầu đời và giáo dục | Sự nghiệp | Cuộc sống cá nhân | Phim tham gia | Giải thưởng và đề cử | Chú thích | Liên kết ngoài | Trình đơn chuyển hướngProfile“Person Details for Thomas Stanley Holland, "England and Wales Birth Registration Index, 1837-2008" — FamilySearch.org”"Meet Tom Holland... the 16-year-old star of The Impossible""Schoolboy actor Tom Holland finds himself in Oscar contention for role in tsunami drama"“Naomi Watts on the Prince William and Harry's reaction to her film about the late Princess Diana”lưu trữ"Holland and Pflueger Are West End's Two New 'Billy Elliots'""I'm so envious of my son, the movie star! British writer Dominic Holland's spent 20 years trying to crack Hollywood - but he's been beaten to it by a very unlikely rival"“Richard and Margaret Povey of Jersey, Channel Islands, UK: Information about Thomas Stanley Holland”"Tom Holland to play Billy Elliot""New Billy Elliot leaving the garage"Billy Elliot the Musical - Tom Holland - Billy"A Tale of four Billys: Tom Holland""The Feel Good Factor""Thames Christian College schoolboys join Myleene Klass for The Feelgood Factor""Government launches £600,000 arts bursaries pilot""BILLY's Chapman, Holland, Gardner & Jackson-Keen Visit Prime Minister""Elton John 'blown away' by Billy Elliot fifth birthday" (video with John's interview and fragments of Holland's performance)"First News interviews Arrietty's Tom Holland"“33rd Critics' Circle Film Awards winners”“National Board of Review Current Awards”Bản gốc"Ron Howard Whaling Tale 'In The Heart Of The Sea' Casts Tom Holland"“'Spider-Man' Finds Tom Holland to Star as New Web-Slinger”lưu trữ“Captain America: Civil War (2016)”“Film Review: ‘Captain America: Civil War’”lưu trữ“‘Captain America: Civil War’ review: Choose your own avenger”lưu trữ“The Lost City of Z reviews”“Sony Pictures and Marvel Studios Find Their 'Spider-Man' Star and Director”“‘Mary Magdalene’, ‘Current War’ & ‘Wind River’ Get 2017 Release Dates From Weinstein”“Lionsgate Unleashing Daisy Ridley & Tom Holland Starrer ‘Chaos Walking’ In Cannes”“PTA's 'Master' Leads Chicago Film Critics Nominations, UPDATED: Houston and Indiana Critics Nominations”“Nominaciones Goya 2013 Telecinco Cinema – ENG”“Jameson Empire Film Awards: Martin Freeman wins best actor for performance in The Hobbit”“34th Annual Young Artist Awards”Bản gốc“Teen Choice Awards 2016—Captain America: Civil War Leads Second Wave of Nominations”“BAFTA Film Award Nominations: ‘La La Land’ Leads Race”“Saturn Awards Nominations 2017: 'Rogue One,' 'Walking Dead' Lead”Tom HollandTom HollandTom HollandTom Hollandmedia.gettyimages.comWorldCat Identities300279794no20130442900000 0004 0355 42791085670554170004732cb16706349t(data)XX5557367