题解 | #判断回文#

判断回文

http://www.nowcoder.com/practice/e297fdd8e9f543059b0b5f05f3a7f3b2

题目描述
给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。

方法一:暴力解法--直接反转字符串,判断是否相等

求解思路
对于本题目,判断是否是回文,我们用最直接的方法,将字符串直接翻转过来,然后判断是否相等即可。

图片说明

解题代码

import java.util.*;
public class Solution {
    public boolean judge (String str)
    {
    String hyres = new StringBuffer(str).reverse().toString(); // 反转字符串
    return str.equals(hyres); // 判断是否相等
    }
}

复杂度分析
时间复杂度:一层循环来翻转字符串,因此时间复杂度为
空间复杂度:存储翻转后的字符串,引入了额外的内存地址空间,因此空间复杂度为

方法二:优化方法--双指针的思想

求解思路
对第一种方法进行优化,采用双指针,一个指针从头到尾,另一个指针从尾到头。两个指针开始跑遍字符串,当两个指针碰头时,则为回文,否则不是回文。

图片说明

解题代码

import java.util.*;
public class Solution {
    public boolean judge (String str) {
        if (str.length() == 0)  return true;
        int left = 0; // 左指针
        int right = str.length() - 1; // 右指针
        while (left < right) // 两个指针,一个从左边开始,一个从右边开始,每次两个
        {
            if (str.charAt(left++) != str.charAt(right--))
                return false; // 指针都同时往中间跑,只要两个指针指向的字符不一样就返回false
        }
        return true;
    }
}

复杂度分析
时间复杂度:一层循环,因此时间复杂度为
空间复杂度:没有引入新的内存地址空间,因此空间复杂度为

算法 文章被收录于专栏

算法题的题解以及感受

全部评论

相关推荐

喜欢核冬天的哈基米很想上市:会爆NullPointerException的
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务