登录
首页 >  文章 >  java教程

Leetcode — 顶级访谈 — 有效回文

来源:dev.to

时间:2024-11-16 18:39:39 135浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是文章学习者,那么本文《Leetcode — 顶级访谈 — 有效回文》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

Leetcode — 顶级访谈 — 有效回文

这是一个简单的问题,描述为:

如果一个短语在将所有大写字母转换为小写字母并删除所有非字母数字字符后,向前和向后读取相同的内容,则该短语是回文。字母数字字符包括字母和数字。

给定一个字符串 s,如果它是回文则返回 true,否则返回 false。

示例1:

输入:s =“一个人,一个计划,一条运河:巴拿马”
输出:true
说明:“amanaplanacanalpanama”是一个回文。

示例2:

输入:s =“赛车”
输出:假
说明:“raceacar”不是回文。

示例3:

输入:s = " "
输出:true
解释:s 是删除非字母数字字符后的空字符串 ""。
由于空字符串向前和向后读取相同,因此它是回文。

限制:

1 <= s.length <= 2 * 105

s 仅包含可打印的 ascii 字符。

在回文之后,您基本上删除所有非 alpha,然后调用降低大小写方法并进行恢复以进行比较。

使用方法和一些 reg exp 你可以用 3 行解决这个问题:

class Solution {
    public boolean isPalindrome(String s) {
        final String reduced = s.replaceAll("[^A-Za-z0-9]", "").toLowerCase();
        final String inverted = new StringBuilder(reduced).reverse().toString();
        return reduced.equals(inverted);
    }
}

运行时间:15 毫秒,比 valid palindrome 的 java 在线提交的 22.51% 快。

内存使用:44.8 mb,低于有效回文 java 在线提交的 34.15%。

作为简单而简单的问题,这应该足够了,但是为了获得更好的性能,您可以迭代并检查每个字符并根据需要删除和调整,对于这种情况,请查看 leetcode 上的 saksham 答案(如果您希望我详细解释) ,请在下面评论)。

就是这样!如果还有什么要讨论的,请随时发表评论,如果我错过了任何内容,请告诉我,以便我进行相应更新。

直到下一篇文章! :)

理论要掌握,实操不能落!以上关于《Leetcode — 顶级访谈 — 有效回文》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>