道阻且长,行则将至,走慢一点没关系,不停下就好了.|

Ac_c0mpany丶

园龄:3年7个月粉丝:6关注:3

2024-01-14 16:10阅读: 2评论: 0推荐: 0

[刷题班] LeetCode125. 验证回文串

题目描述

思路:左右指针

只考虑数字和字母
字母的话需要全部转化为小写
然后使用左右指针判断是否是回文串

方法一:

class Solution {
    public boolean isPalindrome(String s) {
        List<Character> list = new ArrayList<>();
        for (char c : s.toCharArray()) {
            if (c >= 'A' && c <= 'Z') {
                list.add((char)(c + 32));
            } else if (c >= 'a' && c <= 'z') {
                list.add(c);
            } else if (c >= '0' && c <= '9') {
                list.add(c);
            }       
        } 
        int size = list.size() - 1;
        // 左右指针
        for (int left = 0, right = size; left < right; left ++, right --) {
            if (list.get(left) != list.get(right)) {
                return false;
            }
        }
        return true;
    }
}

时间复杂度:O(n)、空间复杂度:O(n)

方法二:

class Solution {
    public boolean isPalindrome(String s) {
        int left = 0, right = s.length() - 1;
        while (left < right) {
            // 忽略left左边无效字符,在数字和字母字符停下
            while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
                left ++;
            }
            // 忽略right右边无效字符
            while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
                right --;
            }

            if (left < right) {
                if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
                    return false;
                }
                left ++;
                right --;
            }
        }
        return true;
    }
}

时间复杂度:O(n)、空间复杂度:O(1)

Character.isLetterOrDigit():判断是否是字母或者数字
Character.toLowerCase():转小写

Character.toLowerCase(char ch) 方法用于将指定的字符参数转换为小写。对于数字字符,它不会有任何影响,即数字字符保持不变。这是因为数字字符在小写和大写之间没有大小写之分。

本文作者:Ac_c0mpany丶

本文链接:https://www.cnblogs.com/keyongkang/p/17963831

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ac_c0mpany丶  阅读(2)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 You Are My Sunshine REOL
You Are My Sunshine - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Traditional

You are my sunshine

My only sunshine.

You make me happy

When skies are gray.

You'll never know, dear,

How much I love you.

Please don't take my sunshine away

The other night, dear,

When I lay sleeping

I dreamed I held you in my arms.

When I awoke, dear,

I was mistaken

So I hung my head and cried.

You are my sunshine,

My only sunshine.

You make me happy

When skies are gray.

You'll never know, dear,

How much I love you.

Please don't take my sunshine away.

You are my sunshine,

My only sunshine

You make me happy

When skies are gray.

You'll never know, dear

How much I love you

Please don't take my sunshine away

Please don't take my sunshine away.

Please don't take my sunshine away.