
字符串
字符串刷题
amor_1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
比较版本号
给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001原创 2021-07-19 21:02:51 · 299 阅读 · 0 评论 -
文本左右对齐
文本左右对齐leetcode给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ’ ’ 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。文本的最后一行应为左对齐,且单词之间不插入额外的空格。说明:单词是指由非空格字符组原创 2020-05-08 21:00:53 · 438 阅读 · 0 评论 -
Z字形变换
Z字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s =原创 2020-05-08 20:42:14 · 127 阅读 · 0 评论 -
串联所有单词的子串
串联所有单词的子串leetcode给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = “barfoothefoobarman”,words = [“foo”,“bar”]输出:[...原创 2020-05-08 10:42:05 · 150 阅读 · 0 评论 -
克隆图
克隆图leetcode思路和代码和复杂链表的拷贝一样,首先要有一个哈希表,来实现原点和克隆点的映射。可以深度遍历,也可以广度遍历去遍历所有的点。class Solution {public: Node* cloneGraph(Node* node) { unordered_map<Node*, Node*> m; return help...原创 2020-05-06 14:38:22 · 151 阅读 · 0 评论 -
单词拆分
单词拆分leetcode给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “le...原创 2020-05-06 14:28:44 · 200 阅读 · 0 评论 -
不同的子序列
不同的子序列、leetcode给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:S = “rabbbit”, T = “...原创 2020-05-06 11:00:39 · 204 阅读 · 0 评论 -
解码方法
解码方法一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “V...原创 2020-05-06 10:45:56 · 151 阅读 · 0 评论 -
编辑距离
编辑距离leetcode给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -&...原创 2020-05-03 15:07:04 · 247 阅读 · 0 评论 -
扰乱字符串
扰乱字符串leetcode给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。下图是字符串 s1 = “great” 的一种可能的表示形式。great/ gr eat/ \ / g r e at/ a t在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。例如,如果我们挑选非叶...原创 2020-05-03 10:49:15 · 243 阅读 · 0 评论 -
交错字符串
交错字符串给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”输出: true示例 2:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”输出: false思路和代码Ø d b b c a...原创 2020-05-01 12:00:20 · 150 阅读 · 0 评论 -
括号生成
括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路和代码还是要求所有的结果,还是递归求解class Solution {public: vector<string> gener...原创 2020-04-23 15:07:32 · 122 阅读 · 0 评论 -
复原IP地址
复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]思路和代码我看到过一句话在处理字符串的时候很有用。一是只要遇到字符串的子序列或配准问题首先考虑动态规划DP二是只要遇到需要求出所有可能情况首先考虑用递归。这一题毫无疑问是求出所有...原创 2020-04-23 14:15:06 · 232 阅读 · 0 评论 -
单词接龙
单词接龙给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 ...原创 2020-04-19 17:58:06 · 274 阅读 · 0 评论 -
逆波兰表达式求值
逆波兰表达式求值描述根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: ((2 + 1) * 3) =...原创 2020-03-17 12:37:16 · 197 阅读 · 0 评论 -
柱状图中最大的矩形
柱状图中最大的矩形描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。思路和代码单调栈解法,单调递增栈首先将-1入栈,用于判断,可有可无然后遍历每一个元素,若该元素大于等于栈顶元素,直接入栈若该元素小于栈顶元素,则栈顶元素出栈,同时计算出栈元素的面积,因为当前让栈顶出栈的元素是栈顶元素的右边第一...原创 2020-03-17 12:20:45 · 142 阅读 · 0 评论 -
有效的括号
有效的括号描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true思路和代码这题学过数据结构的应该都会,就是括号匹配的问题,...原创 2020-03-17 10:09:50 · 132 阅读 · 0 评论 -
最后一个单词的长度
最后一个单词的长度描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5思路和代码先去掉尾部无用的空格,找到结尾单词的尾部end所...原创 2020-03-16 23:56:41 · 89 阅读 · 0 评论 -
简化路径
简化路径描述以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之...原创 2020-03-16 23:47:24 · 337 阅读 · 1 评论 -
字母异位词
有效的字母异位词描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false思路和代码思路1:哈希首先判断s和t长度相等不相等,不相等直接返回false然后定义一个26长度的数组,遍历...原创 2020-03-16 17:35:20 · 337 阅读 · 0 评论 -
外观数列
外观数列描述「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即...原创 2020-03-16 16:40:07 · 228 阅读 · 0 评论 -
整数转罗马数字
整数转罗马数字描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即...原创 2020-03-16 15:23:25 · 111 阅读 · 0 评论 -
有效数字
有效数字描述验证给定的字符串是否可以解释为十进制数字。例如:“0” => true" 0.1 " => true“abc” => false“1 a” => false“2e10” => true" -90e3 " => true" 1e" => false“e3” => false" 6e-1" => true"...原创 2020-03-16 14:25:29 · 458 阅读 · 0 评论 -
最长公共前缀
最长公共前缀描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。思路和代码开始用第一个单词的所有字符作为前缀,因为最长前缀不可能比第一个单词还长。...原创 2020-03-16 14:02:58 · 112 阅读 · 0 评论 -
正则表达式匹配
正则表达式匹配描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s =...原创 2020-03-11 14:27:50 · 156 阅读 · 0 评论 -
manacher算法
马拉车算法一般用于求最长回文子串的问题,暴力求解最长回文字串的时间复杂度是O(n^2),马拉车就是分析回文子串的特点,减少了暴力的过程,时间复杂度是O(n)。最长回文子串问题给一个字符串,求最长回文子串的长度。暴力解法:暴力解法的思路就是遍历每一个元素,以该元素为中心,不断向外扩充,直到不能扩充为止,遍历完所有的字符得到最大的。#include<iostream>#incl...原创 2020-03-11 12:42:27 · 227 阅读 · 0 评论 -
二进制求和
二进制求和描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”思路和代码其实就是从后往前遍历,唯一要处理的地方就是两数长度不等,还有1111和1相加最后要在前面再加一个1的情况...原创 2020-03-11 10:54:33 · 142 阅读 · 0 评论 -
字符串转换整数
字符串转换整数描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的...原创 2020-03-10 11:41:40 · 107 阅读 · 0 评论 -
实现 strStr()
实现 strStr()描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”...原创 2020-03-10 11:00:36 · 89 阅读 · 0 评论 -
验证回文串
验证回文串描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思路和代码其实就是将字符串只保留字母和数字,大写字母要转换成小写字母,然后对字...原创 2020-03-10 10:54:43 · 106 阅读 · 0 评论