回文串解题记录

用户头像
程序员菜哥
关注
发布于: 2020 年 05 月 11 日
回文串解题记录

Photo by Erik Mclean on Unsplash

前言

这是 leetcode 上面的 125 题。之前学习「数据结构与算法之美」的专栏关于链表章节的时候参考着答案写过。这次重新学习该专栏,也就继续再写一次并做下记录。

代码

话不多说,先上自己写的代码,只能说是强算出来了,在性能方面还差的很远,大佬们轻喷。

public class Solution {
public static void main(String[] args) {
String text1 = "A man, a plan, a canal: Panama";
String text2 = "race a car";
String text3 = "1221";
String text4 = "121";
System.out.println(isPalindrome(text1));
System.out.println(isPalindrome(text2));
System.out.println(isPalindrome(text3));
System.out.println(isPalindrome(text4));
}
public static boolean isPalindrome(String s) {
s = s.toLowerCase();
if (s.length() <= 1) {
return true;
}
int x = 0;
int y = s.length() - 1;
for (int i = 0; i < s.length(); ) {
if (x > y) {
return true;
}
char a = s.charAt(i);
char b = s.charAt(y);
if (a >= 48 && a <= 57 || a >= 65 && a <= 90 || a >= 97 && a <= 122) {
if (b >= 48 && b <= 57 || b >= 65 && b <= 90 || b >= 97 && b <= 122) {
if (a == b) {
i++;
y--;
} else {
return false;
}
} else {
y--;
}
} else {
i++;
}
}
return true;
}
}

成绩记录

提交成绩记录

执行用时 :4 ms, 在所有 Java 提交中击败了74.66%的用户

内存消耗 :39.7 MB, 在所有 Java 提交中击败了7.14%的用户

解题思路

这里的解题思路,是通过两个指针,分别从开始和结束的地方索引。在索引过程中,通过 char 类型过滤掉不需要考虑的内容,然后进行比较。如果是不同的,则直接返回 false ,如果 for 顺利结束,那么说明该字符串就是回文字符串。



发布于: 2020 年 05 月 11 日 阅读数: 31
用户头像

程序员菜哥

关注

还未添加个人签名 2017.11.30 加入

还未添加个人简介

评论

发布
暂无评论
回文串解题记录