描述
给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。
示例1
输入: "absba" 返回值: true
示例2
输入: "ranko" 返回值: false
示例3
输入: "yamatomaya" 返回值: false
示例4
输入: "a" 返回值: true
思路
这道题时判断这个字符串是否时回文的,回文其实就是对称的意思。
咱们可以使用双指针的思维来解决这道题。
- 定义两个指针(begin、end)。 begin 指向字符串头部, end 指向字符串尾部。
- 比较两个指针对应的字符是否相等,不想等直接发挥 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)
最后
大家可以去 【牛客网-题库-在线编程】去练习一下。
可以去微信搜索:【蘑菇睡不着】交个朋友~
也可以扫描下方二维码。