| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
can you check it and merge it @NirmalSilwal ? |
Sorry, something went wrong.
|
Hi @ifenil, could you add another approach or more optimized solution. That would be better PR if you are considering hactoberfest. |
Sorry, something went wrong.
|
@NirmalSilwal , |
Sorry, something went wrong.
|
The alternative solution public class Solution {
public boolean isPalindrome(String s) {
int i = 0;
int j = s.length() - 1;
boolean res = true;
while (res) {
// Iterates through string to find first char which is alphanumeric.
// Done to ignore non-alphanumeric characters.
// Starts from 0 to j-1.
while (i < j && isNotAlphaNumeric(s.charAt(i))) {
i++;
}
// Similarly from j-1 to 0.
while (i < j && isNotAlphaNumeric(s.charAt(j))) {
j--;
}
// Checks if i is greater than or equal to j.
// The main loop only needs to loop n / 2 times hence this condition (where n is string
// length).
if (i >= j) {
break;
}
// Assigning found indices to variables.
// The upperToLower function is used to convert characters, if upper case, to lower
// case.
// If already lower case, it'll return as it is.
char left = upperToLower(s.charAt(i));
char right = upperToLower(s.charAt(j));
// If both variables are not same, result becomes false, and breaks out of the loop at
// next iteration.
if (left != right) {
res = false;
}
i++;
j--;
}
return res;
}
private boolean isNotAlphaNumeric(char c) {
return (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9');
}
private boolean isUpper(char c) {
return c >= 'A' && c <= 'Z';
}
private char upperToLower(char c) {
if (isUpper(c)) {
c = (char) (c + 32);
}
return c;
}
} |
Sorry, something went wrong.
There was a problem hiding this comment.
My solution to the problem. Missing some edge cases(which can be added later).
public class Palindrome {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Please enter the string: ");
String str = input.nextLine();
input.close();
int i = 0;
int j = str.length() - 1;
while (i < j) {
if (str.charAt(i) == str.charAt(j)) {
i++;
j--;
} else {
System.out.printf("The string %s is not a Palindrome. \n", str);
return;
}
}
System.out.printf("The string %s is a Palindrome. \n", str);
}
}
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Valid Palindeome From Leetcode August Challange ;
explanation of code line by line through comment;
easily understandable and simple code
it passed all the test cases;