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;
    }
名企高频面试算法题解 文章被收录于专栏

牛客题霸 - 程序员面试高频题 - 题解

全部评论

相关推荐

如题如果提出了一个薪资,A不成功,会有可能被取消offer吗
爱打瞌睡的柯基:最想去你们公司 但是别家开的高一些,希望能申请高一点 不管结果如何都谢谢你
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
评论
3
1
分享
牛客网
牛客企业服务