代码编织梦想

题目截图

在这里插入图片描述

题目分析

  • 无脑做法平方复杂度凉凉
  • 从两边往中间双指针check
  • 一旦left和right不等,考虑去掉当前left或者right,再判断里面的是否回文,只要有一个回文即可为true

ac code

class Solution {

    private String _s = null;

    public boolean validPalindrome(String s) {
        // 双指针从一头一尾判断
        // 一旦遇到不等,考虑去掉左边或者右边,再判断剩下的是否回文即可
        _s = s;
        int left = 0, right = s.length() - 1;
        while (left < right) {
            if (s.charAt(left) == s.charAt(right)) {
                left++;
                right--;
            } else {
                return (checkPalindrome(left + 1, right) || checkPalindrome(left, right - 1));
            }
        }
        return true;
    }

    public boolean checkPalindrome(int left, int right) {
        while (left < right) {
            if (_s.charAt(left) == _s.charAt(right)) {
                left++;
                right--;
            } else {
                return false;
            }            
        }
        return true;
    }
}













总结

  • 双指针,两边往中间走
  • 碰到不等再判断内部的
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40986490/article/details/128395213

剑指 Offer II 019. 最多删除一个字符得到回文串-爱代码爱编程

一、题目 剑指 Offer II 019. 最多删除一个字符得到回文 同Leetcode 680. 验证回文字符串 Ⅱ 给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 示例 1: 输入: s = "aba" 输出: true 二、解题思路 题解参考方法:双指针+递归 从外边往中间进行比较 符串缩小比较

2021-11-14剑指OfferII019.最多删除一个字符得到回文-爱代码爱编程

class Solution { public: bool validPalindrome(string s) { int i = 0; for (; i < s.size() / 2; ++i) { if (s[i] != s[s.size() - 1 - i]) {

剑指 Offer II 019. 最多删除一个字符得到回文(Javascript)-爱代码爱编程

一、题目地址 https://leetcode-cn.com/problems/RQku0D/ 二、具体代码 /** * @param {string} s * @return {boolean} */ // 双指针解法 // 时间复杂度: 最好时为O(n), 最差时为O(n^2),n为s的长度 // 空间复杂度: o(1) var valid

剑指 Offer II 019. 最多删除一个字符得到回文(简单 双指针 字符串)-爱代码爱编程

剑指 Offer II 019. 最多删除一个字符得到回文 给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 示例 1: 输入: s = “aba” 输出: true 示例 2: 输入: s = “abca” 输出: true 解释: 可以删除 “c” 字符 或者 “b” 字符 示例 3: 输入: s =

一刷220-剑指 Offer II 019. 最多删除一个字符得到回文(同:680. 验证回文字符串 Ⅱ)-爱代码爱编程

题目: 给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 ----------- 示例: 输入: s = "aba" 输出: true 示例 2: 输入: s = "abca" 输出: true 解释: 可以删除 "c" 字符 或者 "b" 字符 示例 3: 输入: s = "abc" 输出: false 提

417. 太平洋大西洋水流问题 / 剑指 Offer II 018. 有效的回文 / 剑指 Offer II 019. 最多删除一个字符得到回文-爱代码爱编程

417. 太平洋大西洋水流问题【中等题】【每日一题】 思路: 使用二维数组pacific标记每个坐标是否能够流向太平洋,使用二维数组atlantic 标记每个坐标是否能够流向大西洋,当一个坐标既能够流向太平洋,又能够流向大西洋时,就是题目要找的答案,将这个点的坐标添加到ans列表。 代码: class Solution { public L

剑指 offer ii 019. 最多删除一个字符得到回文_小白码上飞的博客-爱代码爱编程

概要 依旧是双指针法,且最多删除一个字符是关键! 题目 给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 思路 直接双指针从两端向中间遍历,比较两个字符是否一致。题干中的最多删除一个字符是个关键。如果我们遇到了字符不一致的情况,那我们是删左指针还是右指针的字符呢?两个都尝试一下,看删除两个指针后形成的子字符

【leetcode】【剑指offer Ⅱ】019. 最多删除一个字符得到回文_cheny1li1998的博客-爱代码爱编程

问题描述: 给定一个非空字符串 s,请判断如果最多从字符串中删除一个字符能否得到一个回文字符串。 核心思路: 回文问题用双指针。 递归处理问题,如果双指针对应的字符相等,则同时向中间移动(++l, --r);但如

【剑指offer(专项突破)】019. 最多删除一个字符得到回文(java实现) 详细解析_码小楚的博客-爱代码爱编程

题目: 给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 leetcode题目连接:力扣 分析: 回文字符最常用的方法就是双指针,设置一个指针指向起始位置,另一个指针指向终末位置,然后不断向中间靠拢,如果字符是回文字符,则两个指针指向的每个字符都应相等; 根据这个思路,题目

a剑指 offer ii 019. 最多删除一个字符得到回文a详解分析_m0_73548013的博客-爱代码爱编程

给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 示例 1: 输入: s = "aba" 输出: true 示例 2:输入: s = "abca" 输出: true 解释: 可以删除 "c" 字符 或者 "b" 字符 示例 3: 输入: s = "abc" 输出: false

剑指 offer ii 021. 删除链表的倒数第 n 个结点(双指针法)_曦樂~的博客-爱代码爱编程

题目描述: 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。(难度中等)   算法思路: 求出链表的长度(getLength)保证n在链表的长度范围内。 定义快指针先走n步 然后快、慢指针一起走 当快指针的下一个到NULL时,慢指针指向要删除的节点的直接前驱。   这个题力扣官方的双指针法添加了一个哑节点作为头节点,

【剑指 offer ii 019. 最多删除一个字符得到回文】_lfsun666的博客-爱代码爱编程

package com.example.demomain.demoleetcode.easy; /** * 给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。 * * 示例 1:

【leetcode】剑指 offer ii 019. 最多删除一个字符得到回文(python)_python删除字符成为回文数-爱代码爱编程

思路: 双指针 note: 只要左边或者右边删除一个字符后是回文即可。 class Solution: def isPalindrome(self, s, low, high): i, j =