解法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;
}
京公网安备 11010502036488号