Topic:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Are you consider that the string might is empty? This was a good question to ask during a interview.
For the purpose of this problem, we define empty string as valid palindrome.
test instructions and analysis: give a string, only consider the letter or numeric characters, ask whether the string is a palindrome, note that the empty string is also a palindrome.
Method One: Go through the string one time unless the numeric alphabetic character, and then determine whether it is a palindrome, the complexity of N+N/2
classSolution { Public BooleanIspalindrome (String s) {if(s = =NULL|| S.length () = = 0)return true; StringBuilder SB=NewStringBuilder (); for(intI=0;i<s.length (); i++) {//remove punctuation, leaving only letters CharCH =S.charat (i); if(Character.isletterordigit (ch)) {sb.append (CH); } } //turn all lowercase lettersString Newstr =sb.tostring (). toLowerCase (); for(intI=0;i<newstr.length ()/2;i++){ if(Newstr.charat (i)!=newstr.charat (Newstr.length ()-1-i))return false; } return true; }}
Method Two: Direct judgment, each time before and from the past to find an alphanumeric character, if not equal directly return false, the complexity of up to N
classSolution { Public BooleanIspalindrome (String s) {if(s = =NULL|| S.length () = = 0)return true; inti = 0,j = S.length ()-1; for(I=0,j=s.length () -1;i<j;++i,--j) { while(I<j &&!) Character.isletterordigit (S.charat (i))) i++; while(I<j &&!) Character.isletterordigit (S.charat (j))) j--; if(I<j && character.tolowercase (S.charat (i))!=character.tolowercase (S.charat (j)))return false; } return true; }}
[Leetcode] 125. Valid palindrome Java