![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode-字符串
KobeSacre
这个作者很懒,什么都没留下…
展开
-
N 字形变换
解题思路: 创建 numRows 长度的数组然后遍历字符串将每个字符放到对应下标的数组中即可。原创 2023-09-02 10:42:08 · 146 阅读 · 0 评论 -
罗马数字转整数
解题思路2: 如果小的数字在大的数字的右边,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值,如果一个数字右侧的数字比它大,则将该数字的符号取反。解题思路1: 直接代码模拟。原创 2023-08-31 14:37:46 · 284 阅读 · 0 评论 -
把字符串转换成整数
leetcode原创 2022-12-05 21:11:57 · 91 阅读 · 0 评论 -
翻转单词顺序
leetcode原创 2022-10-28 16:32:30 · 88 阅读 · 0 评论 -
第一个只出现一次的字符
leetcode原创 2022-10-10 11:12:42 · 92 阅读 · 0 评论 -
把数组排成最小的数
leetcode原创 2022-10-08 16:53:28 · 93 阅读 · 0 评论 -
表示数值的字符串
表示数值的字符串原创 2022-09-07 11:17:10 · 180 阅读 · 0 评论 -
最多删除一个字符得到回文
最多删除一个字符得到回文题目:给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。示例 1:输入: s = "aba"输出: true示例 2:输入: s = "abca"输出: true解释: 可以删除 "c" 字符 或者 "b" 字符示例 3:输入: s = "abc"输出: falseclass Solution { public boolean validPalindrome(String s) { ch原创 2022-02-14 16:12:48 · 460 阅读 · 0 评论 -
单词长度的最大乘积
单词长度的最大乘积题目:给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。示例 1:输入: words = ["abcw","baz","foo","bar","fxyz","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "fxyz"。它们不包含相同字符,且长度的乘积最大。示例 2:输入: words =原创 2022-02-08 18:53:46 · 102 阅读 · 0 评论 -
字符串解码
字符串解码题目:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例 1:输入:s = “3[a]2[bc]”输出:“aaabcbc”示例 2原创 2021-06-10 16:01:37 · 162 阅读 · 0 评论 -
删除无效的括号
删除无效的括号题目:给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。示例 1:输入:s = “()())()”输出:["(())()","()()()"]示例 2:输入:s = “(a)())()”输出:["(a())()","(a)()()"]示例 3:输入:s = “)(”输出:[""]解题思路: 首先计算出字符串中多余的左右括号数, 再用dfs来枚举出删除相应数目的左右括号(优先删除右括原创 2021-06-10 14:20:06 · 345 阅读 · 0 评论 -
最长有效括号
最长有效括号题目:给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0解题思路:用动态规划进行解决class Solution { public int longestValidParentheses(String s) {原创 2021-06-01 16:55:10 · 62 阅读 · 0 评论 -
最小覆盖子串
最小覆盖子串题目:给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”解题思路:记录字符串 t 的字符出现次数,使用滑动窗口来不断统计字符串 s 的字符出现次数,当滑动窗口范围内的子串字符出现次数覆盖了t以后不断缩小滑动窗口范围来找到最小覆盖原创 2021-06-01 15:27:52 · 83 阅读 · 0 评论 -
电话号码的字母组合
电话号码的字母组合题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]解题思路:先用list保存对应数字的原创 2021-05-30 13:22:04 · 114 阅读 · 0 评论 -
无重复字符的最长子串
leetcode原创 2021-05-29 16:24:03 · 51 阅读 · 0 评论 -
回文子串
回文子串题目:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:“abc”输出:3解释:三个回文子串: “a”, “b”, “c”示例 2:输入:“aaa”输出:6解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”解题思路1:用动态规划解决,记录每个子串是否是回文即可class Solution { public int countS原创 2021-05-29 16:01:50 · 64 阅读 · 0 评论 -
尽可能使字符串相等
尽可能使字符串相等题目:给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回原创 2021-02-05 16:13:07 · 310 阅读 · 0 评论 -
较大分组的位置
较大分组的位置题目:在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分组 的区间,按起始原创 2021-01-05 10:03:40 · 72 阅读 · 0 评论 -
找不同
找不同题目:给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = “abcd”, t = “abcde”输出:“e”解释:‘e’ 是那个被添加的字母。示例 2:输入:s = “”, t = “y”输出:“y”示例 3:输入:s = “a”, t = “aa”输出:“a”示例 4:输入:s = “ae”, t = “aea”输出:“a”解题思路:先将字符串转换成字原创 2020-12-18 09:32:26 · 173 阅读 · 1 评论 -
单词规律
单词规律题目:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = “abba”, str = “dog cat cat dog”输出: true示例 2:输入:pattern = “abba”, str = “dog cat cat fish”输出: false示例 3:输入: patter原创 2020-12-16 09:30:11 · 119 阅读 · 0 评论 -
单调递增的数字
单调递增的数字题目:给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例 1:输入: N = 10输出: 9示例 2:输入: N = 1234输出: 1234示例 3:输入: N = 332输出: 299解题思路:先找到从第一位开始最长的单调递增子数组,然后依次从最后一位满足要求的数字开始递减,直到满足递增要求后,将后面的原创 2020-12-15 11:48:28 · 287 阅读 · 0 评论 -
字母异位词分组
字母异位词分组题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]解题思路:遍历字符串,将组成字符串的字符进行重新排列,然后用HashMap来记录排列以及对应的List,取得List后将该字符串添加进List中即可class Solution { p原创 2020-12-14 09:16:20 · 77 阅读 · 0 评论 -
重构字符串
重构字符串题目:给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例 1:输入: S = “aab”输出: “aba”示例 2:输入: S = “aaab”输出: “”解题思路:首先需要统计每个字符的出现次数,记录出现次数最多的字符,之后对出现次数最多的字符进行判断,它的出现次数是否大于了字符串长度的一半,如果大于则必然出现相邻的情况,如果没有大于那么就把出现次数最多的字符放在数组的偶数位上,其他字符依次填充进数组原创 2020-11-30 13:18:22 · 124 阅读 · 0 评论 -
确定两个字符串是否接近
确定两个字符串是否接近题目:如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )你可以根据需要对任意一个字符串多次使用这两种操作。给你两个字符串,word1 和 word2 。如果 word1 和 wor原创 2020-11-15 20:30:48 · 254 阅读 · 0 评论 -
翻转字符串里的单词
解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。输入:s = “Alice does not even like bob”解释:如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。输入:s = " Bob Loves Alice "输出:“bob like even not does Alice”如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。输入:“a good example”输出:“Alice Loves Bob”原创 2024-01-04 16:49:57 · 475 阅读 · 0 评论 -
最长回文子串
最长回文子串题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”解题思路:遍历字符串,将每一个字符都当作回文的中点来计算当该点为中点时的回文子串长度并记录此时的回文的起点和终点class Solution { public String longestPalindrome(String s) {原创 2020-11-05 16:25:52 · 75 阅读 · 0 评论 -
最长公共前缀
最长公共前缀题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。解题思路:将第一个字符串作为基准,在剩下的字符串中挨个用indexOf寻找,当indexOf返回0时则说明此时的字符串是最长公共前缀,否则不断缩小字符串class Solution {原创 2020-11-05 15:11:49 · 106 阅读 · 0 评论 -
外观数列
外观数列题目:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:111211211111221第一项是数字 1描述前一项,这个数是 1 即 “ 一 个 1 ”,记作原创 2020-11-05 14:51:07 · 87 阅读 · 1 评论 -
字符串转换整数 (atoi)
字符串转换整数 (atoi)题目 :请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符原创 2020-11-05 14:14:14 · 69 阅读 · 0 评论 -
有效的字母异位词
有效的字母异位词题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false解题思路:和字符串中的第一个唯一字符思路类似,先遍历s记录他的字符个数,再比对t,当t中出现的字符在s中没有出现或者次数用尽时说明t和s出现的字符不同class Solution { public boolean i原创 2020-11-05 11:29:05 · 177 阅读 · 0 评论 -
字符串中的第一个唯一字符
字符串中的第一个唯一字符题目:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2解题思路:先遍历一遍字符串,记录所有字符的出现次数,再遍历一次字符串查找该字符的出现次数class Solution { public int firstUniqChar(String s) { if(s.isEmpty()) return -1; i原创 2020-11-05 11:08:08 · 132 阅读 · 0 评论 -
划分字母区间
划分字母区间题目:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。解题思路:原创 2020-10-22 09:45:49 · 101 阅读 · 0 评论 -
长按键入
长按键入题目: 你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。示例 2:输入:name = “saeed”, typed = “ssaaedd”输出:fa原创 2020-10-21 10:17:56 · 109 阅读 · 0 评论 -
比较含退格的字符串
比较含退格的字符串题目:给定 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-19 11:33:48 · 95 阅读 · 0 评论 -
反转字符串中的元音字母
反转字符串中的元音字母题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入:“hello”输出:“holle”示例 2:输入:“leetcode”输出:“leotcede”解题思路: 双指针法解决class Solution { public String reverseVowels(String s) { if(s == null || s.isEmpty() || s.length() == 1) return s;原创 2020-10-15 15:38:20 · 85 阅读 · 0 评论 -
验证回文串
验证回文串题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false解题思路: 用双指针法对字符串首尾进行比较(ps: 回文一般就三种思路: 栈, 双指针, StringBuffer的reverse)class Solution { .原创 2020-10-14 15:14:22 · 77 阅读 · 0 评论