小白水平理解面试经典题目LeetCode 125 Valid Palindrome(验证回文串)

125 验证回文串

说到公司面试,那就是得考出高度,考出水平,什么兼顾这两者呢,那就得看这道

原题描述:

给定一个字符串,判断它是否是回文串。回文串是指正读和反读都一样的字符串。

输入: "A man, a plan, a canal: Panama"

输出: true

示例 2:

输入: "race a car"

输出: false

开始coding

上来一看此题描述,Ok,是我们熟悉的字符串类型。

那还不简单,直接暴力解法走起。

java 复制代码
public class Solution {

    public boolean isPalindrome(String s) {
        if (s == null || s.length() == 0) {
            return true;
        }
        for (int i = 0; i < s.length() / 2; i++) {
            if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
                return false;
            }
        }
        return true;
    }
}

小明:您好,面试官,我轻松解决了这道题。

面试官:好的,下一位!

小明:您等下,这不科学么?

面试官:虽然让你来拧螺丝,但你真是多一点儿算法都不往下研究了啊?

小明:"上海自来水来自海上",好的!那就是来个Two Pointer去搞

java 复制代码
public class Solution {

    public boolean isPalindrome(String s) {
        if (s == null || s.length() == 0) {
            return true;
        }

        int left = 0;
        int right = s.length() - 1;

        while (left <= right) {
            if (s.charAt(left) != s.charAt(right)) {
                return false;
            }

            left++;
            right--;
        }

        return true;
    }
}

面试官满意的说:嗯,这才是我们想要的人才。好了,进入下一场吧!

最后,在遍历过程中,我们还需要注意以下两点:

  • 如果两个指针相遇,则说明该字符串是回文串,直接返回 true。
  • 如果两个指针指向的字符不相等,则说明该字符串不是回文串,直接返回 false。

希望我的讲解能让大家对这道题有更深刻的理解,好了,快去准备下一题吧!

相关推荐
风筝在晴天搁浅16 小时前
快手/字节 CodeTop LeetCode 415.字符串相加
算法·leetcode
米粒118 小时前
力扣算法刷题 Day 64 Floyd算法 & A* 算法 & 总结篇
算法·leetcode·职场和发展
青山师19 小时前
动态代理深度解析:JDK与CGLIB底层实现与实战
java·设计模式·面试·动态代理·java面试·cglib
MonkeyKing715519 小时前
iOS 开发 ARC 与 MRC 底层原理及区别
ios·面试
盏灯20 小时前
以前有一个同事说:最讨厌下班提需求又没电脑在身边...
前端·后端·面试
Kiyra21 小时前
从上传到可问答:Interview Agent 的知识库 RAG 链路
java·人工智能·后端·spring·职场和发展
AI人工智能+电脑小能手21 小时前
【大白话说Java面试题】【Java基础篇】第39题:说说反射的用途及实现原理,Java获取反射(Class)的三种方法
java·开发语言·后端·python·面试
回眸&啤酒鸭21 小时前
【回眸】系统读书笔记(十一)
职场和发展
Liangwei Lin1 天前
LeetCode 41. 缺失的第一个正数
数据结构·算法·leetcode
小雅痞1 天前
[Java][Leetcode hard] 76. 最小覆盖子串
java·算法·leetcode