解法1: 𝑠𝑡𝑟[𝑖] != 𝑠𝑡𝑟[𝑙𝑒𝑛−1−𝑖]
进行𝑙𝑒𝑛/2次判断, 如果出现一次 𝑠𝑡𝑟[𝑖] != 𝑠𝑡𝑟[𝑙𝑒𝑛−1−𝑖] 那就不是回文,𝑙𝑒𝑛/2次判断全都相等,那么就是回文串 public boolean judge (String str) { // write code here if(str.length()==0 || str==null){ return false; } char[] ch=str.toCharArray(); int n=ch.length; for(int i=0;i<n/2;i++){ if(ch[i]!=ch[n-i-1]){ return false; } } return true; }
解法2:双指针
在首尾各创建一个指针,指针所指向的值不相同时则表示此字符串不是回文串
public boolean judge(String str) { // write code here if (str == null || str.length() == 1) return true; int i = 0; int j = str.length() - 1; while (i < j) { if (str.charAt(i) != str.charAt(j)) return false; i++; j--; } return true; }
解法3:栈
字符串先入栈,然后依次弹出判断是否一致
public boolean judge (String str) { // write code here if(str.length()==0 || str==null){ return false; } char[] ch=str.toCharArray(); Stack<Character> stack=new Stack<>(); for(int i=0;i<ch.length;i++){ stack.push(ch[i]); } for(int i=0;i<ch.length;i++){ if(stack.pop()!=ch[i]){ return false; } } return true; }