Leetcode
leetcode题解
Forlogen
无论世事如何,你都要成为一个更优秀的人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
242 - 有效的字母异位词
给定两个字符串 s 和 t,编写一个函数来判断t是否是s的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?简单题就使用简单的方法来解,题目要求判断两个字符串s和t是否是字母异位词,即两个字符串中是否包含相同的字母,只是位置顺序.原创 2020-11-22 10:23:40 · 426 阅读 · 0 评论 -
148 - 快慢指针➕归并解决排序列表问题
排序列表给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在O(nlogn)O(n\log n)O(nlogn)时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内-10原创 2020-11-21 16:14:53 · 491 阅读 · 0 评论 -
391 - 完美矩形问题
完美矩形问题我们有 N 个与坐标轴对齐的矩形, 其中N > 0, 判断它们是否能精确地覆盖一个矩形区域。每个矩形用左下角的点和右上角的点的坐标来表示。例如, 一个单位正方形可以表示为[1,1,2,2]。 ( 左下角的点的坐标为 (1, 1)以及右上角的点的坐标为(2, 2) )。示例 1:rectangles = [[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]]返回 true。5个矩形一起可以精确地覆盖一个矩形区域。示原创 2020-11-19 22:15:46 · 2029 阅读 · 0 评论 -
不同的路径问题Ⅰ Ⅱ Ⅲ
文章目录不同路径Ⅰ不同路径 II不同的路径Ⅲ62 不同路径 63 不同路径 II980 不同路径 III不同路径Ⅰ一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,下图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右原创 2020-11-12 14:52:15 · 938 阅读 · 0 评论 -
从时空复杂度出发,逐步优化接雨水问题
接雨水问题题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9提示:n == height.length0 <原创 2020-11-11 11:55:47 · 539 阅读 · 0 评论 -
Top-k问题的解法
文章目录问题描述最小的k个数1. 暴力排序法2. 大根堆、小根堆3. 快速选择最接近原点的 K 个点问题描述所谓Top-K问题,指的是返回给定数据结构中最大/最小的K个元素,可能是本身的元素,也可能是运算结果中的元素。下面通过一简单的????来进行说明,如果解决这类问题。最小的k个数输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2]原创 2020-11-09 23:37:41 · 815 阅读 · 0 评论 -
844 - 比较含退格的字符串 + 925 - 长键输入 - Java
比较含退格的字符串给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = "a##c", T = "#a#c"输出:true原创 2020-10-21 09:47:58 · 360 阅读 · 0 评论 -
判断一个链表是否是回文链表 - Java
所谓回文链表,指的是它的val从前往后读和从后往前读是一样的,例如1->2->3->2->1和1->2->2->1就是回文链表,而1->2->3->3->1就不是回文链表,那么如何判断一个链表是否是回文链表呢?如果我们知道如何判断一个字符串是否是回文,那么借助辅助空间使用同样的思想判断即可。例如,使用一个ArrayList来存放遍历链表得到的val,然后使用左右指针向中间逼近判断。如果在满足left <= right的前提下,出现le原创 2020-10-09 16:04:08 · 593 阅读 · 0 评论 -
153 - 寻找旋转排序数组中的最小值 - Java
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0该题要求找出升序排序数组旋转后,数组中的最小值,本质上还是求数组的最小值。因此,关键是找到元素排列的突变点nums[i] > nums[i + 1。一种方法是遍历旋转后原创 2020-10-06 17:24:18 · 527 阅读 · 0 评论 -
[动态规划] 152 - 最大乘积子数组 - Java
给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。如果题目要求找出数组中乘积最大的子数组对应的乘积,应该用什么方法呢?当然,我们需要找出数组元素所能组成的所有可能的子数组,然后对每一个子数组求乘积,最后返回最大乘积即可原创 2020-10-06 16:57:26 · 1650 阅读 · 0 评论 -
151 - 翻转字符串里的单词 - Java + Python
给定一个字符串,逐个翻转字符串中的每个单词。说明:无空格字符构成一个 单词 。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。示例 1:输入:"the sky is blue"输出:"blue is sky the"示例 2:输入:" hello world! "输出:"world! hello"解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入:原创 2020-10-05 21:01:13 · 531 阅读 · 0 评论 -
129 - 求根到叶子节点数字之和 - Python + Java
给定一个二叉树,它的每个结点都存放一个 10-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径1->2->3 代表数字123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,数字总和 = 12 + 13 = 25.示例原创 2020-10-05 11:19:16 · 1485 阅读 · 0 评论 -
[快慢指针] 283 - 移动零 - Java
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。如果要求将数组中的0全部移动到数组的后面,而无关心非零元素的位置情况,那么我们可以使用荷兰国旗问题的思路求解,代码如下:class Solution { public void moveZeroes(int[] nums) { if原创 2020-10-04 16:40:53 · 454 阅读 · 0 评论 -
134 - 加油站 - Python +Java
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第i+1个加油站需要消耗汽油 cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。 输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入: gas = [1,2,3,4,5]cost = [3,4,5,1,2]输出:原创 2020-10-02 22:11:18 · 324 阅读 · 0 评论 -
316 + 1081 - 去除重复字母 - python
给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: "abc"示例 2:输入: “cbacdcbc”输出: "acdb"题目要求去除字符串中重复的字母,即使得字符串中的每个字母只能出现一次。同时保证最后的字符串的字典序最小,且最后字符串中字母间相对的前后顺序不能改变。因此,我们需要遍历字符串,同时使用栈来保存当前已经遍历的字符:如果当前字符不在栈中,那么原创 2020-09-20 21:25:14 · 973 阅读 · 0 评论 -
1541 - 平衡括号字符串的最少插入次数
给你一个括号字符串 s ,它只包含字符 '(' 和 ')' 。一个括号字符串被称为平衡的当它满足:任何左括号 '(' 必须对应两个连续的右括号 '))' 。左括号 '(' 必须在对应的连续两个右括号 '))' 之前。比方说 "())", "())(())))" 和 "(())())))" 都是平衡的, ")()", "()))" 和 "(()))" 都是不平衡的。你可以在任意位置插入字符 ‘(’ 和 ‘)’ 使字符串平衡。请你返回让 s 平衡的最少插入次数。示例 1:输入:s = "(())原创 2020-09-19 14:49:25 · 654 阅读 · 0 评论 -
921 - 使括号有效的最少添加 - python
给定一个由 ‘(’ 和 ‘)’ 括号组成的字符串 S,我们需要添加最少的括号( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括号字符串有效。从形式上讲,只有满足下面几点之一,括号字符串才是有效的:它是一个空字符串,或者它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者它可以被写作 (A),其中 A 是有效字符串。给定一个括号字符串,返回为使结果字符串有效而必须添加的最少括号数。示例 1:输入:"())"输出:1示例 2:输入:"((("输出:原创 2020-09-19 14:25:54 · 452 阅读 · 0 评论 -
404 - 左叶子之和 - python
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24简单题,统计给定的二叉树中左叶子节点值的和。整个算法的流程如下:对于每一层的节点判断是否有左孩子node.left如果存在左孩子节点,而且满足node.left.left == None和node.left.right == None,说明node.left即是一个左叶子节点,累加节点值否则,说明node原创 2020-09-19 14:03:09 · 332 阅读 · 0 评论 -
8 - 字符串转换整数 (atoi) - python
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...原创 2020-03-30 12:14:23 · 436 阅读 · 0 评论 -
剑指offer 29 + LeetCode 54 - 顺时针打印矩阵 - Python
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i].length &l原创 2020-09-07 16:57:52 · 356 阅读 · 1 评论 -
[动态规划] - 300 -最长上升子序列 - Python + Java
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。算法的时间复杂度应该为 O(n2)O(n^2)O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?要找无序数组中的最长上升子序列,相当于找所有的上升子序列中最长的那个。因此,如果我们能找到所有原创 2020-08-15 22:53:00 · 393 阅读 · 0 评论 -
[简单题] -- 190 - 191 - 170 - 172 - Java + Python
文章目录190. 颠倒二进制位172. 阶乘后的零191. 位1的个数170. 两数之和 III - 数据结构设计69. x 的平方根190. 颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回原创 2020-08-15 21:48:21 · 349 阅读 · 0 评论 -
146 -- LRU缓存机制 - Java + Python
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get和 写入数据 put 。获取数据get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶: 你是否可以在 O(原创 2020-08-15 21:15:25 · 338 阅读 · 0 评论 -
[动态规划] -- 322 - 零钱兑换 - Java
给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1题目要求根据给定的总金额amount,从不同面值硬币中进行组合,最终找到能凑到amount所需的最少硬币的个数。我们无法直接根据给原创 2020-08-15 20:42:55 · 1181 阅读 · 0 评论 -
36 -- 有效的数独 - Python
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次数字 1-9 在每一列只能出现一次数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."], [原创 2020-08-07 23:27:25 · 376 阅读 · 0 评论 -
二维场景下的回溯问题 -- N皇后 + 数独
文章目录1. N皇后1.1 题目描述1.2 思考2. 数独(Sudoku)2.1 问题描述2.2 思考1. N皇后1.1 题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。例如,上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法原创 2020-08-07 21:09:45 · 605 阅读 · 0 评论 -
[回溯法] -- 90 子集 -- Python + Java
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]题目给定的数组中会包含重复的数字,如果简单的对数组求所有的排列,会发现结果集中的大小会超过正确结果集的大小。这是因为[1, 2]和[2,1 ]这里认为是相同的,因此在回溯过程中保存可能的结果是,需要对当前的结果进行排序然后判断结果集中是否存在排序后原创 2020-08-05 22:30:40 · 464 阅读 · 0 评论 -
[回溯法] -- 78 - 子集 - Java + Python
子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []][回溯法] – 39 - 组合总和 - Python + Java[回溯法] – 40 - 组合总和Ⅱ - Python + Java[回溯法] – 216 - 组合总和Ⅲ - Python原创 2020-08-03 15:11:02 · 455 阅读 · 0 评论 -
[回溯法] -- 77 组合题解 - Java + Python
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]做过了前面关于全排列和组合总和的问题,这道题相比而言就更简单了。对应的回溯法的三大要素:选择列表:当前已经选择的数字可选择列表:当前位置之后的数组元素列表终止条件:当前选择列表的长度等于给定的k选择的过程中也不需要额外的剪枝操作,只需要按照一般回溯法的思原创 2020-08-03 11:30:05 · 341 阅读 · 0 评论 -
[回溯法] -- 216 - 组合总和Ⅲ - Java + Python
组合总和Ⅲ找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数解集不能包含重复的组合示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]这道题和前面系列的题原理上依然逃不出回溯法的套路,不同之处在于要求的结果不同。解集中的结果不仅要求之和等于给定的n,而且每个结果所原创 2020-08-03 10:53:02 · 352 阅读 · 0 评论 -
[回溯法] -- 40 - 组合总和Ⅱ - Java +Python
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数解集不能包含重复的组合示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]]示例 2:输入原创 2020-08-03 10:14:52 · 315 阅读 · 0 评论 -
[回溯法] -- 39 - 组合总和 - Java + Python
组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:输入:candidates = [2,3,5], targ原创 2020-08-03 09:56:13 · 505 阅读 · 0 评论 -
[回溯法] -- 52 - N皇后Ⅱ - Java
[回溯法] – 46 - 全排列 - python + Java[回溯法] – 47 - 全排列Ⅱ - python + JavaN皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。例如,上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."].原创 2020-08-03 00:17:33 · 305 阅读 · 0 评论 -
169 - 多数元素 - python
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2题目要求返回出现次数大于⌊ n/2 ⌋ 的元素,这里需要使用ceil()进行向下取整,并使用Counter()统计数...原创 2020-04-16 23:40:20 · 769 阅读 · 0 评论 -
[双指针法]167 - 两数之和 II - 输入有序数组 - python + Java
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], targ...原创 2020-04-16 23:08:48 · 454 阅读 · 0 评论 -
160 -相交链表 - python
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,...原创 2020-04-16 22:47:00 · 396 阅读 · 0 评论 -
176 - 第二高的薪水 - SQL
SQL架构:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水...原创 2020-04-16 22:25:48 · 267 阅读 · 0 评论 -
175 -组合两个表- SQL
SQL架构表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+Pe...原创 2020-04-16 21:51:32 · 244 阅读 · 0 评论 -
6 - Z字形变换 - python
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:s...原创 2020-04-14 21:59:41 · 405 阅读 · 0 评论 -
5 - 最长回文字串 - python + Java
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"根据回文串的定义可知,单个字符一定是回文串,两个相同的字符一定是回文串,如果在回文串的两端加上相同的字符那么得到的结果必定也是回文串。因此一种方法是从外往里...原创 2020-04-13 21:48:37 · 249 阅读 · 0 评论
分享