Easy to Read Palindrome Checker The Next CEO of Stack OverflowMilliseconds to Time string & Time string to MillisecondsPalindrome Checker Algorithm“ACM ICPC Team” challenge on Hackerrank… Easy?Largest palindrome in a stringTest if a string is a palindromeFinding an equilibrium index in an int arrayEasy Deep Copy of Array JavascriptPalindrome checker in JavaScriptCode Chef RAINBOW PalindromeJavaScript Anagram checker

Why is information "lost" when it got into a black hole?

Easy to Read Palindrome Checker

Does soap repel water?

How a 64-bit process virtual address space is divided in Linux?

Bartok - Syncopation (1): Meaning of notes in between Grand Staff

How do I align (1) and (2)?

Can we say or write : "No, it'sn't"?

What flight has the highest ratio of time difference to flight time?

Why don't programming languages automatically manage the synchronous/asynchronous problem?

Why isn't the Mueller report being released completely and unredacted?

Why this way of making earth uninhabitable in Interstellar?

Does falling count as part of my movement?

Make solar eclipses exceedingly rare, but still have new moons

Where do students learn to solve polynomial equations these days?

Why do remote US companies require working in the US?

No sign flipping while figuring out the emf of voltaic cell?

Is a distribution that is normal, but highly skewed considered Gaussian?

How to invert MapIndexed on a ragged structure? How to construct a tree from rules?

Unreliable Magic - Is it worth it?

Is it professional to write unrelated content in an almost-empty email?

Domestic-to-international connection at Orlando (MCO)

Newlines in BSD sed vs gsed

Received an invoice from my ex-employer billing me for training; how to handle?

Why does the flight controls check come before arming the autobrake on the A320?



Easy to Read Palindrome Checker



The Next CEO of Stack OverflowMilliseconds to Time string & Time string to MillisecondsPalindrome Checker Algorithm“ACM ICPC Team” challenge on Hackerrank… Easy?Largest palindrome in a stringTest if a string is a palindromeFinding an equilibrium index in an int arrayEasy Deep Copy of Array JavascriptPalindrome checker in JavaScriptCode Chef RAINBOW PalindromeJavaScript Anagram checker










4












$begingroup$


I made a palindrome checker that's supposed to be designed to be simple and easy to read. Please let me know what you think. I believe the time complexity is O(n) but I'm not too sure about that:



Challenge: You'll need to remove all non-alphanumeric characters (punctuation, spaces and symbols) and turn everything into the same case (lower or upper case) in order to check for palindromes.



function reverseString(str)

str = str.replace(/[^ws]


reverseString("My age is 0, 0 si ega ym.");

function palindrome(str) _/g, "").toLowerCase().split(" ").join("");
if(str === reverseString(str))

return true;

else

return false;











share|improve this question











$endgroup$











  • $begingroup$
    Are you sure this is working as intended?
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    The test reverseString("My age is 0, 0 si ega ym."); should at least be something like console.log(palindrome(reverseString("My age is 0, 0 si ega ym.")));, and does your challenge ignore spaces? Because if they don't, your example string should return false while it doesn't. Please clarify the exact challenge.
    $endgroup$
    – Mast
    2 hours ago






  • 1




    $begingroup$
    Sorry I updated it
    $endgroup$
    – DreamVision2017
    2 hours ago










  • $begingroup$
    Much better, thank you.
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    Np, let me know if there's anything else that needs to be changed
    $endgroup$
    – DreamVision2017
    2 hours ago















4












$begingroup$


I made a palindrome checker that's supposed to be designed to be simple and easy to read. Please let me know what you think. I believe the time complexity is O(n) but I'm not too sure about that:



Challenge: You'll need to remove all non-alphanumeric characters (punctuation, spaces and symbols) and turn everything into the same case (lower or upper case) in order to check for palindromes.



function reverseString(str)

str = str.replace(/[^ws]


reverseString("My age is 0, 0 si ega ym.");

function palindrome(str) _/g, "").toLowerCase().split(" ").join("");
if(str === reverseString(str))

return true;

else

return false;











share|improve this question











$endgroup$











  • $begingroup$
    Are you sure this is working as intended?
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    The test reverseString("My age is 0, 0 si ega ym."); should at least be something like console.log(palindrome(reverseString("My age is 0, 0 si ega ym.")));, and does your challenge ignore spaces? Because if they don't, your example string should return false while it doesn't. Please clarify the exact challenge.
    $endgroup$
    – Mast
    2 hours ago






  • 1




    $begingroup$
    Sorry I updated it
    $endgroup$
    – DreamVision2017
    2 hours ago










  • $begingroup$
    Much better, thank you.
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    Np, let me know if there's anything else that needs to be changed
    $endgroup$
    – DreamVision2017
    2 hours ago













4












4








4





$begingroup$


I made a palindrome checker that's supposed to be designed to be simple and easy to read. Please let me know what you think. I believe the time complexity is O(n) but I'm not too sure about that:



Challenge: You'll need to remove all non-alphanumeric characters (punctuation, spaces and symbols) and turn everything into the same case (lower or upper case) in order to check for palindromes.



function reverseString(str)

str = str.replace(/[^ws]


reverseString("My age is 0, 0 si ega ym.");

function palindrome(str) _/g, "").toLowerCase().split(" ").join("");
if(str === reverseString(str))

return true;

else

return false;











share|improve this question











$endgroup$




I made a palindrome checker that's supposed to be designed to be simple and easy to read. Please let me know what you think. I believe the time complexity is O(n) but I'm not too sure about that:



Challenge: You'll need to remove all non-alphanumeric characters (punctuation, spaces and symbols) and turn everything into the same case (lower or upper case) in order to check for palindromes.



function reverseString(str)

str = str.replace(/[^ws]


reverseString("My age is 0, 0 si ega ym.");

function palindrome(str) _/g, "").toLowerCase().split(" ").join("");
if(str === reverseString(str))

return true;

else

return false;








javascript algorithm programming-challenge array






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 hours ago







DreamVision2017

















asked 3 hours ago









DreamVision2017DreamVision2017

464




464











  • $begingroup$
    Are you sure this is working as intended?
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    The test reverseString("My age is 0, 0 si ega ym."); should at least be something like console.log(palindrome(reverseString("My age is 0, 0 si ega ym.")));, and does your challenge ignore spaces? Because if they don't, your example string should return false while it doesn't. Please clarify the exact challenge.
    $endgroup$
    – Mast
    2 hours ago






  • 1




    $begingroup$
    Sorry I updated it
    $endgroup$
    – DreamVision2017
    2 hours ago










  • $begingroup$
    Much better, thank you.
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    Np, let me know if there's anything else that needs to be changed
    $endgroup$
    – DreamVision2017
    2 hours ago
















  • $begingroup$
    Are you sure this is working as intended?
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    The test reverseString("My age is 0, 0 si ega ym."); should at least be something like console.log(palindrome(reverseString("My age is 0, 0 si ega ym.")));, and does your challenge ignore spaces? Because if they don't, your example string should return false while it doesn't. Please clarify the exact challenge.
    $endgroup$
    – Mast
    2 hours ago






  • 1




    $begingroup$
    Sorry I updated it
    $endgroup$
    – DreamVision2017
    2 hours ago










  • $begingroup$
    Much better, thank you.
    $endgroup$
    – Mast
    2 hours ago










  • $begingroup$
    Np, let me know if there's anything else that needs to be changed
    $endgroup$
    – DreamVision2017
    2 hours ago















$begingroup$
Are you sure this is working as intended?
$endgroup$
– Mast
2 hours ago




$begingroup$
Are you sure this is working as intended?
$endgroup$
– Mast
2 hours ago












$begingroup$
The test reverseString("My age is 0, 0 si ega ym."); should at least be something like console.log(palindrome(reverseString("My age is 0, 0 si ega ym.")));, and does your challenge ignore spaces? Because if they don't, your example string should return false while it doesn't. Please clarify the exact challenge.
$endgroup$
– Mast
2 hours ago




$begingroup$
The test reverseString("My age is 0, 0 si ega ym."); should at least be something like console.log(palindrome(reverseString("My age is 0, 0 si ega ym.")));, and does your challenge ignore spaces? Because if they don't, your example string should return false while it doesn't. Please clarify the exact challenge.
$endgroup$
– Mast
2 hours ago




1




1




$begingroup$
Sorry I updated it
$endgroup$
– DreamVision2017
2 hours ago




$begingroup$
Sorry I updated it
$endgroup$
– DreamVision2017
2 hours ago












$begingroup$
Much better, thank you.
$endgroup$
– Mast
2 hours ago




$begingroup$
Much better, thank you.
$endgroup$
– Mast
2 hours ago












$begingroup$
Np, let me know if there's anything else that needs to be changed
$endgroup$
– DreamVision2017
2 hours ago




$begingroup$
Np, let me know if there's anything else that needs to be changed
$endgroup$
– DreamVision2017
2 hours ago










2 Answers
2






active

oldest

votes


















2












$begingroup$

Time complexity



Your time complexity is linear, although you can save a few traversals over the string and lower the constant factor.



Repeated code



Repeated code harms maintainability and readability. Notice that the line



str.replace(/[^ws]|_/g, "").toLowerCase().split(" ").join("");


appears in two places in the code. If you decide to change one to accept a different regex but forget to change the other one, you've introduced a potentially subtle bug into your program. Move this to its own function to avoid duplication.



Use accurate function names and use builtins



reverseString is a confusing function: it does more than reversing a string as advertised: it also strips whitespace and punctuation, which would be very surprising if I called this function as a user of your library without knowing its internals. All functions should operate as black boxes that perform the task they claim to, nothing more or less.



The array prototype already has a reverse() function, so there's no need to write this out by hand.



Avoid unnecessary verbosity



The code:



 if(str === reverseString(str))

return true;

else

return false;



is clearer written as return str === reverseString(str);, which says "return the logical result of comparing str and its reversal".



Improve the regex to match your specification



Including spaces in your regex substitution to "" is easier than .split(" ").join(""). If you wish to remove all non-alphanumeric characters, a regex like /[^a-zd]/gi reflects your written specification accurately (or use W if you don't mind including underscores).



Style remarks



  • JS uses K&R braces instead of Allman by convention.

  • Add a blank line above for and if blocks to ease vertical congestion.

  • Add a space around keywords and operators like for( and >=0, which are clearer as for ( and >= 0.

  • No need for parentheses around a return value.


  • array.push(str[i]) is missing a semicolon.

  • CodeReview's snippet autoformatter will automatically do most of this for you.

A rewrite






const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));








share|improve this answer











$endgroup$












  • $begingroup$
    Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
    $endgroup$
    – DreamVision2017
    15 mins ago











  • $begingroup$
    Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
    $endgroup$
    – ggorlen
    5 mins ago


















1












$begingroup$

Too much code.



  • You can return a boolean

Note that the positions of and



 if(str === reverseString(str)) 
return true;
else
return false;



Becomes



 return str === reverseString(str);


  • You can remove whites spaces and commas etc with regExp /W/g


  • Array has a reverse function which you can use rather than do it manually.


  • You should reverse the string in the function.


  • Strings are iterate-able so you can convert a string to an array with [...str]


Example



function isPalindrome(str) 
str = str.replace(/W/g,"").toLowerCase();
return str === [...str].reverse().join("");






share|improve this answer









$endgroup$












  • $begingroup$
    Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
    $endgroup$
    – DreamVision2017
    5 mins ago











Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");

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/3.0/"u003ecc by-sa 3.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%2f216534%2feasy-to-read-palindrome-checker%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









2












$begingroup$

Time complexity



Your time complexity is linear, although you can save a few traversals over the string and lower the constant factor.



Repeated code



Repeated code harms maintainability and readability. Notice that the line



str.replace(/[^ws]|_/g, "").toLowerCase().split(" ").join("");


appears in two places in the code. If you decide to change one to accept a different regex but forget to change the other one, you've introduced a potentially subtle bug into your program. Move this to its own function to avoid duplication.



Use accurate function names and use builtins



reverseString is a confusing function: it does more than reversing a string as advertised: it also strips whitespace and punctuation, which would be very surprising if I called this function as a user of your library without knowing its internals. All functions should operate as black boxes that perform the task they claim to, nothing more or less.



The array prototype already has a reverse() function, so there's no need to write this out by hand.



Avoid unnecessary verbosity



The code:



 if(str === reverseString(str))

return true;

else

return false;



is clearer written as return str === reverseString(str);, which says "return the logical result of comparing str and its reversal".



Improve the regex to match your specification



Including spaces in your regex substitution to "" is easier than .split(" ").join(""). If you wish to remove all non-alphanumeric characters, a regex like /[^a-zd]/gi reflects your written specification accurately (or use W if you don't mind including underscores).



Style remarks



  • JS uses K&R braces instead of Allman by convention.

  • Add a blank line above for and if blocks to ease vertical congestion.

  • Add a space around keywords and operators like for( and >=0, which are clearer as for ( and >= 0.

  • No need for parentheses around a return value.


  • array.push(str[i]) is missing a semicolon.

  • CodeReview's snippet autoformatter will automatically do most of this for you.

A rewrite






const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));








share|improve this answer











$endgroup$












  • $begingroup$
    Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
    $endgroup$
    – DreamVision2017
    15 mins ago











  • $begingroup$
    Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
    $endgroup$
    – ggorlen
    5 mins ago















2












$begingroup$

Time complexity



Your time complexity is linear, although you can save a few traversals over the string and lower the constant factor.



Repeated code



Repeated code harms maintainability and readability. Notice that the line



str.replace(/[^ws]|_/g, "").toLowerCase().split(" ").join("");


appears in two places in the code. If you decide to change one to accept a different regex but forget to change the other one, you've introduced a potentially subtle bug into your program. Move this to its own function to avoid duplication.



Use accurate function names and use builtins



reverseString is a confusing function: it does more than reversing a string as advertised: it also strips whitespace and punctuation, which would be very surprising if I called this function as a user of your library without knowing its internals. All functions should operate as black boxes that perform the task they claim to, nothing more or less.



The array prototype already has a reverse() function, so there's no need to write this out by hand.



Avoid unnecessary verbosity



The code:



 if(str === reverseString(str))

return true;

else

return false;



is clearer written as return str === reverseString(str);, which says "return the logical result of comparing str and its reversal".



Improve the regex to match your specification



Including spaces in your regex substitution to "" is easier than .split(" ").join(""). If you wish to remove all non-alphanumeric characters, a regex like /[^a-zd]/gi reflects your written specification accurately (or use W if you don't mind including underscores).



Style remarks



  • JS uses K&R braces instead of Allman by convention.

  • Add a blank line above for and if blocks to ease vertical congestion.

  • Add a space around keywords and operators like for( and >=0, which are clearer as for ( and >= 0.

  • No need for parentheses around a return value.


  • array.push(str[i]) is missing a semicolon.

  • CodeReview's snippet autoformatter will automatically do most of this for you.

A rewrite






const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));








share|improve this answer











$endgroup$












  • $begingroup$
    Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
    $endgroup$
    – DreamVision2017
    15 mins ago











  • $begingroup$
    Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
    $endgroup$
    – ggorlen
    5 mins ago













2












2








2





$begingroup$

Time complexity



Your time complexity is linear, although you can save a few traversals over the string and lower the constant factor.



Repeated code



Repeated code harms maintainability and readability. Notice that the line



str.replace(/[^ws]|_/g, "").toLowerCase().split(" ").join("");


appears in two places in the code. If you decide to change one to accept a different regex but forget to change the other one, you've introduced a potentially subtle bug into your program. Move this to its own function to avoid duplication.



Use accurate function names and use builtins



reverseString is a confusing function: it does more than reversing a string as advertised: it also strips whitespace and punctuation, which would be very surprising if I called this function as a user of your library without knowing its internals. All functions should operate as black boxes that perform the task they claim to, nothing more or less.



The array prototype already has a reverse() function, so there's no need to write this out by hand.



Avoid unnecessary verbosity



The code:



 if(str === reverseString(str))

return true;

else

return false;



is clearer written as return str === reverseString(str);, which says "return the logical result of comparing str and its reversal".



Improve the regex to match your specification



Including spaces in your regex substitution to "" is easier than .split(" ").join(""). If you wish to remove all non-alphanumeric characters, a regex like /[^a-zd]/gi reflects your written specification accurately (or use W if you don't mind including underscores).



Style remarks



  • JS uses K&R braces instead of Allman by convention.

  • Add a blank line above for and if blocks to ease vertical congestion.

  • Add a space around keywords and operators like for( and >=0, which are clearer as for ( and >= 0.

  • No need for parentheses around a return value.


  • array.push(str[i]) is missing a semicolon.

  • CodeReview's snippet autoformatter will automatically do most of this for you.

A rewrite






const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));








share|improve this answer











$endgroup$



Time complexity



Your time complexity is linear, although you can save a few traversals over the string and lower the constant factor.



Repeated code



Repeated code harms maintainability and readability. Notice that the line



str.replace(/[^ws]|_/g, "").toLowerCase().split(" ").join("");


appears in two places in the code. If you decide to change one to accept a different regex but forget to change the other one, you've introduced a potentially subtle bug into your program. Move this to its own function to avoid duplication.



Use accurate function names and use builtins



reverseString is a confusing function: it does more than reversing a string as advertised: it also strips whitespace and punctuation, which would be very surprising if I called this function as a user of your library without knowing its internals. All functions should operate as black boxes that perform the task they claim to, nothing more or less.



The array prototype already has a reverse() function, so there's no need to write this out by hand.



Avoid unnecessary verbosity



The code:



 if(str === reverseString(str))

return true;

else

return false;



is clearer written as return str === reverseString(str);, which says "return the logical result of comparing str and its reversal".



Improve the regex to match your specification



Including spaces in your regex substitution to "" is easier than .split(" ").join(""). If you wish to remove all non-alphanumeric characters, a regex like /[^a-zd]/gi reflects your written specification accurately (or use W if you don't mind including underscores).



Style remarks



  • JS uses K&R braces instead of Allman by convention.

  • Add a blank line above for and if blocks to ease vertical congestion.

  • Add a space around keywords and operators like for( and >=0, which are clearer as for ( and >= 0.

  • No need for parentheses around a return value.


  • array.push(str[i]) is missing a semicolon.

  • CodeReview's snippet autoformatter will automatically do most of this for you.

A rewrite






const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));








const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));





const palindrome = str => 
str = str.replace(/[^a-zd]/gi, "").toLowerCase();
return str === str.split("").reverse().join("");
;

console.log(palindrome("My age is 0, 0 si ega ym."));






share|improve this answer














share|improve this answer



share|improve this answer








edited 29 mins ago

























answered 1 hour ago









ggorlenggorlen

403111




403111











  • $begingroup$
    Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
    $endgroup$
    – DreamVision2017
    15 mins ago











  • $begingroup$
    Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
    $endgroup$
    – ggorlen
    5 mins ago
















  • $begingroup$
    Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
    $endgroup$
    – DreamVision2017
    15 mins ago











  • $begingroup$
    Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
    $endgroup$
    – ggorlen
    5 mins ago















$begingroup$
Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
$endgroup$
– DreamVision2017
15 mins ago





$begingroup$
Good points, just to make sure is the time complexity O(n) because the reverse function traverses through each element of the array?
$endgroup$
– DreamVision2017
15 mins ago













$begingroup$
Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
$endgroup$
– ggorlen
5 mins ago




$begingroup$
Your code makes ~11 trips over the n-sized input, which is why I mention the high constant factor. If you do the replacement and lowercasing one time, you can get away with about 6 trips through the input. I count any array function, loop or === as one trip over the input. This is a pretty minor concern relative to the other points, though, and addressing the style points accidentally improves your performance along the way.
$endgroup$
– ggorlen
5 mins ago













1












$begingroup$

Too much code.



  • You can return a boolean

Note that the positions of and



 if(str === reverseString(str)) 
return true;
else
return false;



Becomes



 return str === reverseString(str);


  • You can remove whites spaces and commas etc with regExp /W/g


  • Array has a reverse function which you can use rather than do it manually.


  • You should reverse the string in the function.


  • Strings are iterate-able so you can convert a string to an array with [...str]


Example



function isPalindrome(str) 
str = str.replace(/W/g,"").toLowerCase();
return str === [...str].reverse().join("");






share|improve this answer









$endgroup$












  • $begingroup$
    Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
    $endgroup$
    – DreamVision2017
    5 mins ago















1












$begingroup$

Too much code.



  • You can return a boolean

Note that the positions of and



 if(str === reverseString(str)) 
return true;
else
return false;



Becomes



 return str === reverseString(str);


  • You can remove whites spaces and commas etc with regExp /W/g


  • Array has a reverse function which you can use rather than do it manually.


  • You should reverse the string in the function.


  • Strings are iterate-able so you can convert a string to an array with [...str]


Example



function isPalindrome(str) 
str = str.replace(/W/g,"").toLowerCase();
return str === [...str].reverse().join("");






share|improve this answer









$endgroup$












  • $begingroup$
    Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
    $endgroup$
    – DreamVision2017
    5 mins ago













1












1








1





$begingroup$

Too much code.



  • You can return a boolean

Note that the positions of and



 if(str === reverseString(str)) 
return true;
else
return false;



Becomes



 return str === reverseString(str);


  • You can remove whites spaces and commas etc with regExp /W/g


  • Array has a reverse function which you can use rather than do it manually.


  • You should reverse the string in the function.


  • Strings are iterate-able so you can convert a string to an array with [...str]


Example



function isPalindrome(str) 
str = str.replace(/W/g,"").toLowerCase();
return str === [...str].reverse().join("");






share|improve this answer









$endgroup$



Too much code.



  • You can return a boolean

Note that the positions of and



 if(str === reverseString(str)) 
return true;
else
return false;



Becomes



 return str === reverseString(str);


  • You can remove whites spaces and commas etc with regExp /W/g


  • Array has a reverse function which you can use rather than do it manually.


  • You should reverse the string in the function.


  • Strings are iterate-able so you can convert a string to an array with [...str]


Example



function isPalindrome(str) 
str = str.replace(/W/g,"").toLowerCase();
return str === [...str].reverse().join("");







share|improve this answer












share|improve this answer



share|improve this answer










answered 1 hour ago









Blindman67Blindman67

9,0811621




9,0811621











  • $begingroup$
    Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
    $endgroup$
    – DreamVision2017
    5 mins ago
















  • $begingroup$
    Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
    $endgroup$
    – DreamVision2017
    5 mins ago















$begingroup$
Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
$endgroup$
– DreamVision2017
5 mins ago




$begingroup$
Ah I see, btw I tried to code from scratch as much as possible to get better at problem solving/ programming. Although you are right that there are many JS methods that would make it easier to implement a solution.
$endgroup$
– DreamVision2017
5 mins ago

















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%2f216534%2feasy-to-read-palindrome-checker%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

Станькаў Зьмест Назва | Гісторыя | Насельніцтва | Турыстычная інфармацыя | Галерэя | Асобы | Заўвагі | Крыніцы | Літаратура | Вонкавыя спасылкі | Навігацыйнае мэню53°37′48″ пн. ш. 27°13′40″ у. д. / 53.63° пн. ш. 27.22778° у. д. / 53.63; 27.2277853°37′48″ пн. ш. 27°13′40″ у. д. / 53.63° пн. ш. 27.22778° у. д. / 53.63; 27.22778djvu"Бабёнка – это я понимаю!". Як русіфікавалі тапонімы.Святыя руіны ажываюць210Станькаўв. СтанькаваСтаньково: история и новости - сайт деревниСтанькава: сядзіба Гутэн-Чапскіхррр

J. J. Abrams Índice Traxectoria | Filmografía | Premios | Notas | Véxase tamén | Menú de navegacióne"J.J. Abrams: Biography"Arquivado"'Star Trek' sequel on track"Arquivado"J.J. Abrams Producing Samurai Jack Movie"Arquivado"EXCLUSIVE: J.J. Abrams Goes Into Warp Speed with Star Trek and Beyond"Arquivado"David Semel To Direct Jonah Nolan/J.J. Abrams' CBS Pilot 'Person Of Interest'"Arquivado"Fox orders J.J. Abrams pilot 'Alcatraz'"ArquivadoJ. J. AbramsJ. J. AbramsWorldCat81800131p24091041000XX116709414031616ma11226833654496ID052246713376222X511412nm00091900000 0001 1772 5428no98124254ID0000002883100650044xx0054597000141374297344064w64f2mjx14255303415344

Першая сусьветная вайна Зьмест Чыньнікі | Асноўныя падзеі | Беларусь у гады вайны | Балянс вайны | Глядзіце таксама | Крыніцы | Вонкавыя спасылкі | Навігацыйнае мэнюПершая сусьветная вайна: памяць павінна жыць124 (27489)41990-763xЗападный мир отмечает 90 лет со дня окончания Первой мировой войныПершая сусьветная вайнаСпадчына Першай сусьветнай вайныГісторыя вайныАрхіў дакумэнтаў вайныМапы Эўропы ў ходзе вайныГісторыя пад знакам Пагоні/Першая сусветная вайна і Беларусь