描述

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

示例1

输入:
"absba"

返回值:
true

示例2

输入:
"ranko"

返回值:
false

示例3

输入:
"yamatomaya"

返回值:
false

示例4

输入:
"a"

返回值:
true

思路

这道题时判断这个字符串是否时回文的,回文其实就是对称的意思。
咱们可以使用双指针的思维来解决这道题。

  1. 定义两个指针(begin、end)。 begin 指向字符串头部, end 指向字符串尾部。
  2. 比较两个指针对应的字符是否相等,不想等直接发挥 false;相等则 begin ++; end --。然后在判断,知道 end > begin 为止。

AC 代码

public boolean judge (String str) {
        // write code here
        if (str == null || str.length() < 1) {
            return false;
        }
        // 定义两个指针
        int begin = 0;
        int end = str.length() - 1;
        // 当 begin 没有超过 end 时
        while (end > begin) {
            // 如果两个指针对应的字符不相等,直接返回 false
            if (str.charAt(begin) != str.charAt(end)) {
                return false;
            }
            // 两个指针前进
            begin ++;
            end --;
        }
        // 这时候判断字符串时回文的
        return true;
    }

时间复杂度:O(N),N 字符串长度
空间复杂度:O(1)

最后

大家可以去 【牛客网-题库-在线编程】去练习一下。
可以去微信搜索:【蘑菇睡不着】交个朋友~
也可以扫描下方二维码。

图片说明