剑指offer/Leetcode-【字符串篇】
面试
魑魅魍魉114
这个作者很懒,什么都没留下…
展开
-
Leetcode242. 有效的字母异位词
中每个字符出现的次数都相同,则称。,编写一个函数来判断。原创 2023-09-29 22:22:06 · 301 阅读 · 0 评论 -
Leetcode290. 单词规律
中的每个非空单词之间存在着双向连接的对应规律。里的每个字母和字符串。是否遵循相同的规律。原创 2023-09-29 22:14:31 · 315 阅读 · 0 评论 -
Leetcode205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。中的字符可以按某种映射关系替换得到。,那么这两个字符串是同构的。,判断它们是否是同构的。原创 2023-09-29 00:18:05 · 150 阅读 · 0 评论 -
Leetcode383. 赎金信
题解:字符统计方法,只要保证。原创 2023-09-28 23:56:03 · 252 阅读 · 0 评论 -
Leetcode392. 判断子序列
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。原创 2023-09-26 08:22:59 · 199 阅读 · 0 评论 -
Leetcode13. 罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。给定一个罗马数字,将其转换成整数。,即为两个并列的 1。原创 2023-09-24 22:32:53 · 159 阅读 · 0 评论 -
Leetcode171. Excel 表列序号
表示 Excel 表格中的列名称。该列名称对应的列序号。原创 2023-09-17 09:38:12 · 235 阅读 · 0 评论 -
Leetcode168. Excel表列名称
【代码】Leetcode168. Excel表列名称。原创 2023-09-17 09:04:36 · 190 阅读 · 0 评论 -
Leetcode165. 比较版本号
【代码】Leetcode165. 比较版本号。原创 2023-09-16 09:48:10 · 175 阅读 · 0 评论 -
Leetcode131. 分割回文串
是正着读和反着读都一样的字符串。分割成一些子串,使每个子串都是。所有可能的分割方案。原创 2023-09-08 09:05:58 · 306 阅读 · 0 评论 -
Leetcode125. 验证回文串
我们直接在原字符串 sss 上使用双指针。在移动任意一个指针时,需要不断地向另一指针的方向移动,直到遇到一个字母或数字字符,或者两指针重合为止。也就是说,我们每次将指针移到下一个字母字符或数字字符,再判断这两个指针指向的字符是否相同。如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。字母和数字都属于字母数字字符。原创 2023-09-04 10:14:26 · 331 阅读 · 0 评论 -
Leetcode76. 最小覆盖子串
所有字符的子串,则返回空字符串。所有字符的最小子串。原创 2023-08-26 08:02:22 · 122 阅读 · 0 评论 -
Leetcode67 二进制求和
以二进制字符串的形式返回它们的和。给你两个二进制字符串。原创 2023-08-21 13:29:45 · 363 阅读 · 0 评论 -
Leetcode151 翻转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。原创 2023-08-17 09:23:23 · 160 阅读 · 0 评论 -
Leetcode32 最长有效括号
的字符串,找出最长有效(格式正确且连续)括号子串的长度。原创 2023-08-17 08:48:23 · 301 阅读 · 0 评论 -
Leetcode49. 字母异位词分组
复杂度:时间复杂度O(n*k),n是字符串个数,k是最长字符串长度,循环字符串数组复杂度O(n),对每个字符串统计频次复杂度O(k)。空间复杂度O(n*k),map中存放了n个大小最长为k的字符串。思路:题意是字符串的字符都是小写,可以对每个字符串统计其中字符的频次,将每个字符频次相同的字符串放在一组。是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。给你一个字符串数组,请你将。原创 2023-08-16 12:00:42 · 355 阅读 · 0 评论 -
Leetcode22 括号生成
【代码】Leetcode22 括号生成。原创 2023-08-09 09:25:34 · 154 阅读 · 0 评论 -
leetcode 9 回文数
【代码】leetcode 9 回文数。原创 2023-07-18 22:59:26 · 1045 阅读 · 0 评论 -
Leetcode5 最长回文子串
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。从每一个位置出发,向两边扩散即可。遇到不是回文的时候结束。"aba" 同样是符合题意的答案。原创 2023-02-28 15:31:07 · 158 阅读 · 1 评论 -
Leetcode20 有效的括号
思路:从题意中可以看出,右括号")" "}" "]" 匹配需要离它最近的左括号来进行匹配,因此可以定义一个栈来实现(栈是先进后出)给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。3.每个右括号都有一个对应的相同类型的左括号。1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。原创 2023-01-30 11:58:51 · 133 阅读 · 1 评论 -
Leetcode567 字符串的排列
题目:给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true;否则,返回 false。换句话说,s1 的排列之一是 s2 的 子串。s2 包含 s1 的排列之一 ("ba")原创 2023-01-26 18:28:01 · 83 阅读 · 0 评论 -
Leetcode784 字母大小写全排列
首先,根据题目描述,我们要将遇到的所有“英文字母”执行大小写转换,并将每一个变换后的字符串保存下来,作为最终结果输出。那么,我们可以采用回溯的方式对这道题进行处理。步骤2:执行递归操作,处理下一个英文字母,即:第1层以A为基础,去处理下一个英文字母b。步骤3:执行回溯操作,将下标为0的英文字母a进行还原操作,即:从A还原为a。步骤1:发现下标为i处是英文字母时,我们以第0处是a为例,则将a变为A。中的每个字母转变大小写,我们可以获得一个新的字符串。循环遍历整个字符串s的每个字符。所有可能得到的字符串集合。原创 2023-01-24 14:43:45 · 92 阅读 · 0 评论 -
华为机试2:获取字符串中连续出现次数第k多的字母的次数
第二多的是H,3次,但是H已经存在4个连续的,故不考虑;第二多的还是A,两次,但A已经存在最大连续次数三次,故不考虑;给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。三个子串长度均为1,所以此时k = 1,k=2,k=3这三种情况均输出1。思路:创建一个数组,字符-A' 的ascii值代表索引,数组元素代表重复子串出现的最大次数。备注:若子串中只包含同一字母的子串数小于k,则输出-1。只含有3个包含同一字母的子串,小于k,输出-1。原创 2023-01-18 17:05:52 · 179 阅读 · 0 评论 -
Leetcode14 最长公共前缀
思路:纵向扫描纵向扫描时,从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同,如果相同则继续对下一列进行比较,如果不相同则当前列不再属于公共前缀,当前列之前的部分为最长公共前缀。...原创 2022-06-29 15:59:28 · 158 阅读 · 0 评论 -
Leetcode1451 重新排列句子中的单词
「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text :句子的首字母大写text 中的每个单词都用单个空格分隔。请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。请同样按上述格式返回新的句子输入:text = "Keep calm and code on"输出:"On and keep calm code"实现代码public String arrangeWords(String te.原创 2022-05-16 14:39:34 · 81 阅读 · 0 评论 -
LeetCode8 字符串转整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。注意:假如该...原创 2021-04-29 09:50:50 · 195 阅读 · 0 评论 -
Leetcode3 无重复字符的最长子串
题目描述:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是子序列而不是子串代码如下:public int lengthOfLongestSubstring(String s) { int n ...转载 2021-03-02 09:47:30 · 148 阅读 · 0 评论 -
JZ38 字符串的排列
【题目描述】输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。【解题思路】把字符串分为两部分:一部分是字符串的第一个字符,另一部分是第一个字符以后的所有字符。第一步是求所有可能出现在第一个位置的字符,即把第一个字符和后面所有字符交换。(for循环、交换操作) 第二步是固定住第一个字符,转载 2021-02-20 11:46:26 · 335 阅读 · 0 评论 -
JZ20 表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。【解题思路】//1. 合法的数值可以表示为A[.[B]][e|EC]或者.B[e|EC].//2. 其中A为整数部分,B为小数部分,C为e|E的指数部分。在纯小数的时候,可能没有整数部分,如小数.123等于0.123,是合法的。所以A部分不是必原创 2021-02-20 10:54:35 · 237 阅读 · 0 评论 -
JZ50 第一个只出现一次的字符
题目描述:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b’。思路分析:思路1:暴力求解,从前到后依次判断每个字符是否只出现一次,时间复杂度o(n^2),空间复杂度o(1);代码实现如下:public static char FirstNotRepeatingChar(String str) { if(str == null || str.length() <= 0) return "#";//输出'#'代表没有满足条件的原创 2021-02-20 09:09:19 · 180 阅读 · 0 评论 -
JZ73 翻转字符串——翻转单词顺序
题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。这道题很多次公司拿来作为面试题 ,可以通过两次翻转字符串来实现思路:第一步翻转句子中所有的字符。比如翻转"I am a student."中所有的字符得到".tneduts a ma I",此时不但反转了句子中单词的顺序,连单词内的字符顺序也被反转了。第二步再翻转每个单词中的字符的顺原创 2021-02-18 23:55:44 · 1278 阅读 · 0 评论