[Java演算法]1、迴文字串判斷演算法
阿新 • • 發佈:2018-12-17
public class Palindrome { private boolean isAlphanueric(char c) { return (c>='a' && c<='z') || (c>='A'&&c<='Z') || (c>='0'&&c<='9'); } private boolean isEqualIgnoreCase(char a,char b) { if(a>='A' && a<='Z') a+=32; if(b>='A' && b<='Z') b+=32; return a==b; } //Time:O(n),Space:O(1) public boolean isPalindrome(String s) { if(s == null || s.length() == 0) return true; //邊界情況 int i = 0,j=s.length()-1; for(;i<j;++i,--j) { while(i<j && !isAlphanueric(s.charAt(i))) ++i; while(i<j && !isAlphanueric(s.charAt(j))) --j; if(i<j && !isEqualIgnoreCase(s.charAt(i),s.charAt(j))) return false; } return true; } }