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
Inappropriate reference requests from Journal reviewers
Would this house-rule that treats advantage as a +1 to the roll instead (and disadvantage as -1) and allows them to stack be balanced?
Does increasing your ability score affect your main stat?
Won the lottery - how do I keep the money?
What was the first Unix version to run on a microcomputer?
Is wanting to ask what to write an indication that you need to change your story?
Reference request: Grassmannian and Plucker coordinates in type B, C, D
No sign flipping while figuring out the emf of voltaic cell?
Is micro rebar a better way to reinforce concrete than rebar?
Math-accent symbol over parentheses enclosing accented symbol (amsmath)
Is a distribution that is normal, but highly skewed considered Gaussian?
Does soap repel water?
How to count occurrences of text in a file?
Make solar eclipses exceedingly rare, but still have new moons
Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?
How to place nodes around a circle from some initial angle?
WOW air has ceased operation, can I get my tickets refunded?
is it ok to reduce charging current for li ion 18650 battery?
RigExpert AA-35 - Interpreting The Information
Why doesn't UK go for the same deal Japan has with EU to resolve Brexit?
Why is information "lost" when it got into a black hole?
Are police here, aren't itthey?
Would a completely good Muggle be able to use a wand?
Is it my responsibility to learn a new technology in my own time my employer wants to implement?
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
$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;
javascript algorithm programming-challenge array
$endgroup$
add a comment |
$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;
javascript algorithm programming-challenge array
$endgroup$
$begingroup$
Are you sure this is working as intended?
$endgroup$
– Mast
2 hours ago
$begingroup$
The testreverseString("My age is 0, 0 si ega ym.");
should at least be something likeconsole.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
add a comment |
$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;
javascript algorithm programming-challenge array
$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
javascript algorithm programming-challenge array
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 testreverseString("My age is 0, 0 si ega ym.");
should at least be something likeconsole.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
add a comment |
$begingroup$
Are you sure this is working as intended?
$endgroup$
– Mast
2 hours ago
$begingroup$
The testreverseString("My age is 0, 0 si ega ym.");
should at least be something likeconsole.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
add a comment |
2 Answers
2
active
oldest
votes
$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
andif
blocks to ease vertical congestion. - Add a space around keywords and operators like
for(
and>=0
, which are clearer asfor (
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."));
$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
16 mins ago
$begingroup$
Your code makes ~11 trips over then
-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
add a comment |
$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("");
$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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%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
$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
andif
blocks to ease vertical congestion. - Add a space around keywords and operators like
for(
and>=0
, which are clearer asfor (
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."));
$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
16 mins ago
$begingroup$
Your code makes ~11 trips over then
-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
add a comment |
$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
andif
blocks to ease vertical congestion. - Add a space around keywords and operators like
for(
and>=0
, which are clearer asfor (
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."));
$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
16 mins ago
$begingroup$
Your code makes ~11 trips over then
-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
add a comment |
$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
andif
blocks to ease vertical congestion. - Add a space around keywords and operators like
for(
and>=0
, which are clearer asfor (
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."));
$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
andif
blocks to ease vertical congestion. - Add a space around keywords and operators like
for(
and>=0
, which are clearer asfor (
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."));
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
16 mins ago
$begingroup$
Your code makes ~11 trips over then
-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
add a comment |
$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
16 mins ago
$begingroup$
Your code makes ~11 trips over then
-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
16 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
16 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
add a comment |
$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("");
$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
add a comment |
$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("");
$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
add a comment |
$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("");
$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("");
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
add a comment |
$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
add a comment |
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216534%2feasy-to-read-palindrome-checker%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$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 likeconsole.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