NC141:判断回文
判断回文
http://www.nowcoder.com/questionTerminal/e297fdd8e9f543059b0b5f05f3a7f3b2
解法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; }
名企高频面试算法题解 文章被收录于专栏
牛客题霸 - 程序员面试高频题 - 题解