LeetCode
陈粑粑的小白鞋
这个作者很懒,什么都没留下…
展开
-
LeetCode670—最大交换(java版)
题目描述:标签:贪心 数学给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。代码:思路分析:从高位开始,寻找能否在低位找到替换位,替换的数字尽可能大,当有同大时选择更低的。class Solution { public int maximumSwap(int num) { char[] array = String.valueOf(num).toCharArray(); for(int i = 0;i &..原创 2021-09-10 10:45:11 · 555 阅读 · 1 评论 -
LeetCode86—分割链表(java版)
题目描述:标签:链表 双指针给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。代码:思路分析:构建两个链表,一个链表smallHead保存小于x的数,一个链表largeHead保存大于等于x的数,然后将smallHead的链尾接到largeHead的头部,并将largeHead的链尾置空。/** * Definition for s..原创 2021-09-10 10:33:50 · 434 阅读 · 0 评论 -
LeetCode61—旋转链表(java版)
题目描述:标签:链表 双指针给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。代码:思路分析:1、首先要有链表环的思想,如果移动的k是链表长度n的倍数,则说明没有移动保持原样,所以这里要有对k%n取余的思想。当形成链表环之后,要找到链表的最后一个节点是哪个,然后在该节点处断开即可。2、处理特殊情况,链表为空或者链表长度为1,都返回原链表即可3、统计链表长度,这里要注意因为要将最后一个节点与链表头连接在一起,所以不能用cur==null来作为...原创 2021-09-10 10:14:46 · 424 阅读 · 0 评论 -
LeetCode25—K个一组翻转链表(java版)
题目描述:标签:递归 链表给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。代码:思路分析:1、将链表分为三个部分,已翻转--待翻转--未翻转。2、定义start和end来指向待翻转部分的开头结点和末尾结点,并定...原创 2021-09-02 19:51:28 · 365 阅读 · 1 评论 -
LeetCode504—七进制数(java版)
题目描述:标签:数学给定一个整数num,将其转化为7 进制,并以字符串形式输出。代码:思路分析:1、利用了StringBuffer的insert()方法,可以在指定位置插入元素(这样就可以不用反转了)2、将每次取余的数num%7添加至sb的头部,并将该数变为num/7class Solution { public String convertToBase7(int num) { if(num == 0){ retu...原创 2021-09-01 21:43:07 · 214 阅读 · 0 评论 -
LeetCode204—计数质数(java版)
题目描述:标签:数组 数学 枚举 数论统计所有小于非负整数n的质数的数量。代码:思路分析:暴力循环会超时,这里采用了埃及筛方法。1、定义一个prime数组,长为n,每个初始值为1,这个数组中1代表是质数,0代表不是质数2、如果一个数x是质数,那它的倍数2x、3x、...等肯定不是质数,筛除掉3、再优化就是x*x开始筛选,因为 k < x的倍数已经别筛选掉了。class Solution { public int countPrimes(in...原创 2021-09-01 21:20:32 · 128 阅读 · 0 评论 -
LeetCode646—最长数对链(java版)
题目描述:标签:贪心 数组 动态规划 排序给出n个数对。在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当b < c时,数对(c, d)才可以跟在(a, b)后面。我们用这种形式来构造一个数对链。给定一个数对集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。代码:思路分析:1、确定dp数组以及下标的含义——这里dp[i]表示到下标i之前的数对中最长数对链的长...原创 2021-08-23 19:26:59 · 127 阅读 · 0 评论 -
LeetCode91—解码方法(java版)
题目描述:标签: 字符串 动态规划一条包含字母A-Z 的消息通过以下映射进行了 编码 :'A' -> 1'B' -> 2...'Z' -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:"AAJF" ,将消息分组为 (1 1 10 6)"KJF" ,将消息分组为 (11 10 6)注意,消息不能分组为(1 11 06) ,因为 "06" 不能映射为 "F" ,这是由于 "...原创 2021-08-21 16:16:46 · 151 阅读 · 0 评论 -
LeetCode413—等差数列划分(java版)
题目描述:标签:数组 动态规划如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。代码:思路分析:动态规划五部曲1、确定dp数组以及下标的含义——这里dp[i]表示(0,i)区间内的等差数列个数2、确定递推公式,当满足num...原创 2021-08-19 12:34:42 · 206 阅读 · 0 评论 -
LeetCode303—区间和检索-数组不可变(java版)
题目描述:标签: 设计 数组 前缀和给定一个整数数组 nums,求出数组从索引i到j(i≤j)范围内元素的总和,包含i、j两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引i到j(i≤j)范围内元素的总和,包含i、j两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))代码...原创 2021-08-17 19:09:47 · 177 阅读 · 1 评论 -
LeetCode64—最小路径和(java版)
题目描述:标签:数组 动态规划 矩阵给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。代码:思路分析:其实用dp[][]二维矩阵处理这题更好理解,但为了减少空间所以用了一维的dp,但还是二维的思路阐述。1、确定dp数组以及下标的含义——这里dp[i][j]表示到达(i,j)点的最小路径和2、确定递推公式,(i,j)点只能由上方点和左方点到达,所以dp[i][j]...原创 2021-08-15 16:28:20 · 289 阅读 · 0 评论 -
LeetCode167—两数之和Ⅱ-输入有序数组(java版)
题目描述:标签:数组 双指针 二分查找给定一个已按照升序排列的整数数组numbers,请你从数组中找出两个数满足相加之和等于目标数target。函数应该以长度为2的整数数组的形式返回这两个数的下标值。numbers的下标从 1 开始计数,所以答案数组应当满足1 <= answer[0] < answer[1] <= numbers.length。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。代码:思路分析...原创 2021-08-03 21:52:29 · 147 阅读 · 0 评论 -
LeetCode79—单词搜索(java版)
题目描述:标签:数组 回溯 矩阵给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。代码:思路分析:和图里的dfs搜索很像1、对棋盘遍历,并对当前点进行dfs搜索2、定义dfs方法即backTracing方法,首先判断当前长度是...原创 2021-08-12 19:53:59 · 239 阅读 · 1 评论 -
LeetCode417—太平洋大西洋水流问题(java版)
题目描述:标签:深度优先搜索 广度优先搜索 数组 矩阵给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。代码:思路分析:1、设置两个boolean数组canReachP和canReachA记录每个水流是否能流入太平洋或者...原创 2021-08-11 23:41:59 · 204 阅读 · 0 评论 -
LeetCode130—被围绕的区域(java版)
题目描述:标签:深度优先搜索 广度优先搜索 并查集 数组 矩阵给你一个m x n的矩阵board,由若干字符'X'和'O',找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。代码:思路分析:有向图类型1、分析情况,需要把边界上的O即和边界上上O相连的区域保留下来。所以本题可以转变为求边界上的'O'的连通区域,并将连通区域里的'O'替换为‘T’。2、和之前题目一样,对上下左右四条边界遍历,碰到'O'就进行dfs搜索。3、...原创 2021-08-11 22:14:45 · 291 阅读 · 0 评论 -
LeetCode547—省份数量(java版)
题目描述:标签:深度优先搜索 广度优先搜索 并查集 图有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连...原创 2021-08-11 21:52:20 · 315 阅读 · 0 评论 -
LeetCode200—岛屿数量(java版)
题目描述:标签:深度优先搜索 广度优先搜索 并查集 数组 矩阵给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。代码:思路分析:1、处理特殊情况,grid为null或长度为0;2、遍历grid,对每个值为1的点进行dfs搜索;3、定义dfs方法,先判断当前下标是否合理且当前值是否为0,如果不合理或者为0...原创 2021-08-11 21:26:51 · 241 阅读 · 0 评论 -
LeetCode695—岛屿的最大面积(java版)
题目描述:标签:深度优先搜索 广度优先搜索 并查集 数组 矩阵给定一个包含了一些 0 和 1 的非空二维数组grid 。一个岛屿是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)代码:思路分析:1、处理特殊情况,grid为null或长度为0;2、遍历grid,对每个点进行...原创 2021-08-09 23:54:38 · 256 阅读 · 0 评论 -
LeetCode127—单词接龙(java版)
题目描述:标签:广度优先搜索 哈希表 字符串字典wordList 中从单词 beginWord和 endWord 的 转换序列 是一个按下述规格形成的序列:序列中第一个单词是 beginWord 。序列中最后一个单词是 endWord 。每次转换只能改变一个字母。转换过程中的中间单词必须是字典wordList 中的单词。给你两个单词 beginWord和 endWord 和一个字典 wordList ,找到从beginWord 到endWord 的 最短转换序列 中的 ...原创 2021-08-09 23:32:11 · 452 阅读 · 0 评论 -
LeetCode279—完全平方数(java版)
题目描述:标签:广度优先搜索 数学 动态规划给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。代码:思路分析:将从1~n的每个整数看成图中的一个节点,如果两个整数之差为...原创 2021-08-09 19:36:21 · 673 阅读 · 0 评论 -
LeetCode1091—二进制矩阵中的最短路径(java版)
题目描述:标签:广度优先搜索 数组 矩阵给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求:路径途经的所有单元格都的值都是 0 。路径中所有相邻的单元格应当在 8 个方向之一 上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。畅通路径的长度 是该路径途..原创 2021-08-08 17:39:46 · 408 阅读 · 0 评论 -
LeetCode95—不同的二叉搜索树(java版)
题目描述:标签:树 二叉搜索 数学 动态规划 回溯 二叉树给你一个整数n,请你生成并返回所有由n个节点组成且节点值从1到n互不相同的不同二叉搜索树。可以按任意顺序返回答案。代码:思路分析:分别以1~n之间任意一个数为根节点,该数左边对应左子树,右边对应右子树,所以修正区间,左区间为[begin,i-1],右区间为[i+1,end],在这两个区间继续递归生成二叉搜索树。/** * Definition for a binary tree...原创 2021-08-08 17:04:38 · 270 阅读 · 0 评论 -
LeetCode241—为运算表达式设计优先级(java版)
题目描述:标签:递归 记忆化搜索 数学 字符串 动态规划给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含+,-以及*。代码:思路分析:分治思想(其实画一棵树来表示递归就很容易理解了)1、判断当前元素是不是运算符,是则将分为左右两个字符串进行递归,分别返回左字符串的结果leftList和右字符串的rightList,根据字符对两个list遍历进行符号运算。2、如果当前...原创 2021-08-08 16:30:46 · 190 阅读 · 0 评论 -
LeetCode523—连续的子数组和(java版)
题目描述:标签:数组 哈希表 数学 前缀和给你一个整数数组nums和一个整数k,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小至少为 2,且 子数组元素总和为k的倍数。如果存在,返回true;否则,返回false。如果存在一个整数n,令整数x符合x = n * k,则称x是k的一个倍数。0始终视为k的一个倍数。代码:思路分析:1、数学推理,假设pre[i]代表前i个元素的和,所以[j...原创 2021-08-08 15:55:56 · 187 阅读 · 0 评论 -
LeetCode560—和为K的子数组(java版)
题目描述:标签:数组 哈希表 前缀和给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。代码:思路分析:1、数学推理,假设pre[i]代表前i个元素的和,所以[j,i]要满足和谐区间的条件,需要pre[i] - pre[j-1] = K也就是说pre[j-1] = pre[i] - K2、明白以上原理就很好做了,定义一个map来存储前缀和pre出现的次数。并每次观察当前前缀和pre[i]-K是否存在在map中,如果存在则cou...原创 2021-08-08 15:35:27 · 188 阅读 · 0 评论 -
LeetCode34—在排序数组中查找元素的第一个和最后一个位置(java版)
题目描述:标签:数组 二分查找给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?代码:思路分析:1、找到目标值的下标,和常规的二分查找没啥不同;2、主要是需要找到区间的范围,这里用了while循环来找,注意begin=-2,end=0的初值这样设置的原因主要是如果找...原创 2021-08-07 23:40:47 · 164 阅读 · 0 评论 -
LeetCode153—寻找旋转排序数组中的最小值(java版)
题目描述:标签:数组 二分查找已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]].原创 2021-08-07 23:20:02 · 147 阅读 · 0 评论 -
LeetCode278—第一个错误的版本(java版)
题目描述:标签:二分查找 交互你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API ...原创 2021-08-07 16:53:38 · 97 阅读 · 0 评论 -
LeetCode540—有序数组中的单一元素(java版)
题目描述:标签:数组 二分查找给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。代码:思路分析:1、分析指针移动的判断条件,如果单个数的下标是index,则如果当前偶数下标是m,则在index之前的成对元素应该满足nums[m]==nums[m+1],而index之后的元素nums[m]!=nums[m+1],是因为插入单个元素改变了性质。2、如果nums[m]==nums[m+1],则index在区间[m+2,right]之间,所以l..原创 2021-08-07 16:03:38 · 156 阅读 · 0 评论 -
LeetCode744—寻找比目标字母大的最小字母(java版)
题目描述:标签:数组 二分查找给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = 'z' 并且字符列表为letters = ['a', 'b'],则答案返回'a'代码:思路分析:还是二分查找,但主要是找到那个可以插入元素的下标值,所以要注意循环不变量的使用,同时如果是要最后一个元素后面插入元素,...原创 2021-08-07 15:31:02 · 152 阅读 · 0 评论 -
LeetCode69—x的平方根(java版)
题目描述:标签:数组 二分查找实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。代码:思路分析:在[1,x]区间利用二分查找,查找一个满足平方数要求。其中要注意循环不变量的使用。class Solution { public int mySqrt(int x) { if(x <= 1){ return x;...原创 2021-08-07 15:07:36 · 99 阅读 · 0 评论 -
LeetCode665—非递减数列(java版)
题目描述:标签:数组给你一个长度为n的整数数组,请你判断在 最多 改变1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中任意的i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。代码:思路分析:1、要学会总结在什么情况下会要进行改变元素的操作: ①当nums[i] >= nums[i-1]时,满足非递减的条件,所以不需要改变元素 ...原创 2021-08-07 10:13:55 · 145 阅读 · 0 评论 -
LeetCode605—种花问题(java版)
题目描述:标签:贪心 数组假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数n ,能否在不打破种植规则的情况下种入n朵花?能则返回 true ,不能则返回 false。代码:思路分析:1、找到能种花的条件,即前一块地和后一块地都没有种花,即pre和next为02、但...原创 2021-08-07 09:39:28 · 231 阅读 · 0 评论 -
LeetCode75—颜色分类(java版)
题目描述:标签:数组 双指针 排序给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。代码:思路分析:其实这题最暴力的算法就是直接用api排序QAQ。不过真的太简单粗暴了。这题主要是想考察快排的思想。比某个数小的在左边,等于某个数的在中间,大于某个数的在右边。还主要考察了“循环不变量”的思想。1、要划分为三个区间...原创 2021-08-06 20:54:05 · 223 阅读 · 0 评论 -
LeetCode451—根据字符出现频率排序(java版)
题目描述:标签:哈希表 字符串 桶排序 计数 排序 堆(优先队列)给定一个字符串,请将字符串里的字符按照出现的频率降序排列。代码:思路分析:1、定义一个Map,key为ch,value为每个ch对应的频次,这里利用到了getOrDefault()方法,且要注意对字符串用增强for循环,要记得把字符串转换为字符数组s.toCharArray();2、定义一个桶数组,每个元素对应的类型是LIst<Character>,桶数组的长度应该对应s.length()...原创 2021-08-06 20:27:41 · 391 阅读 · 0 评论 -
LeetCode347—前K个高频元素(java版)
题目描述:标签:数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。代码:思路分析:class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer,Integer> map = new HashMap<...原创 2021-08-06 20:04:21 · 402 阅读 · 0 评论 -
LeetCode215—数组中的第K个最大元素(java版)
题目描述:标签:数组 双指针 字符串 排序代码:《一》暴力算法思路分析:Arrays.sort()底层用的是快排,时间复杂度是O(NlogN),空间复杂度是O(!)。注意第K个最大元素对应的下标是nums.length - kclass Solution { public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[n...原创 2021-08-04 23:39:58 · 256 阅读 · 1 评论 -
LeetCode524—通过删除字母匹配到字典里最长单词(java版)
题目描述:标签:数组 双指针 字符串 排序给你一个字符串 s 和一个字符串数组 dictionary 作为字典,找出并返回字典中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。代码:思路分析:1、定义一个函数isSubString(String s1, String s2)来判断s2是不是s1的子串其中判断是否是子串,使用了双指针方法。定义两个指针分别指向两个字符串的开头...原创 2021-08-04 16:51:33 · 125 阅读 · 0 评论 -
LeetCode88—合并两个有序数组(java版)
题目描述:标签:数组 双指针 排序给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。代码:思路分析:1、要注意两个数组都是有序数组,且注意遍历顺序,如果从前往后遍历需要不停地移动nums1数组的元素,所以选择从后向前遍历,避免...原创 2021-08-03 23:50:35 · 419 阅读 · 0 评论 -
LeetCode680—验证回文字符串Ⅱ(java版)
题目描述:标签:贪心 双指针 字符串给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。代码:思路分析:1、定义双指针left=0,right=s.length()-1指向字符串的两端2、判断两个指针指向的元素是否相等,相等则left++,right--,继续判断;如果不等,则删除一个字符,判断从(left+1,right)子字符串或者(left,right-1)子字符串是不是回文字符串(单独写一个函数判断是不是回文字符串)class Sol...原创 2021-08-03 23:32:24 · 162 阅读 · 0 评论