![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构-字符串
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
leetcode-058-最后一个单词的长度
从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度。由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。题目要求得到字符串中最后一个单词的长度,可以反向遍历字符串,寻找最后一个单词并计算其长度。解法1(成功,1ms,较慢)原创 2023-06-09 22:34:31 · 67 阅读 · 0 评论 -
leetcode-030-串联所有单词的子串
初始化 differ 时,出现在窗口中的单词,每出现一次,相应的值增加 1,出现在 words 中的单词,每出现一次,相应的值减少 1。窗口移动时,若出现 differ 中值不为 0 的键的数量为 0,则表示这个窗口中的单词频次和 words 中单词频次相同,窗口的左端点是一个待求的起始位置。不同的是第 438 题的元素是字母,而此题的元素是单词。然后进行回溯,对每个下标,进行dfs,碰到dict[index][i]为true的,wordsNum[i]--,如果回溯到wordsNum全为0,代表全部对应。原创 2023-05-06 22:40:59 · 84 阅读 · 0 评论 -
leetcode-006-N 字形变换
对于其他行:两个公差为 2 * (n − 1) 的等差数列交替排列,首项分别是 i 和 2 * n − i − 2。解决方案为:模拟这个行索引的变化,在遍历 s 中把每个字符填到正确的行 res[i]。对于第一行和最后一行:公差为 2 * (n − 1) 的等差数列,首项是 i。对于本题,我们可以不失一般性的将规律推导为「首项」和「公差公式」。res[i] += c: 把每个字符 c 填入对应行 s_is。i += flag: 更新当前字符 c 对应的行索引;解法1(成功,7ms,较快)原创 2023-04-19 22:38:00 · 433 阅读 · 0 评论 -
剑指offer-49-把字符串转为整数-java
题目及测试package sword049;/* 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 * 数值为0或者字符串不是一个合法的数值则返回0*/public class main { public static void main(String[] args) { String [] testTable = {"123","+12","-569","+12345678901556","-2147483648","-2147483649","2147483原创 2021-01-16 12:48:33 · 117 阅读 · 0 评论 -
剑指offer-42-翻转单词顺序VS左旋转字符串-java
题目及测试package sword042;/*题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 * 为简单起见,标点符号和普通字母一样处理。 * 例如输入字符串为“I am a Student.",则输出为”Student. a am i".题目二:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转的功能。比如输入字符串”abcdefg"和数字2,该函数将返回左旋转2位得到的结果“cdefgab"*/pub原创 2021-01-11 21:31:42 · 108 阅读 · 0 评论 -
剑指offer-35-第一个只出现一次的字符-java
题目及测试package sword035;/* 题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'.*/public class main { public static void main(String[] args) { String [] testTable = {"leetcode","abaccdeff"}; for (String ito : testTable) { test(ito); } } pri原创 2020-12-26 11:03:57 · 94 阅读 · 0 评论 -
剑指offer-4-替换空格-java
题目及测试package sword004;/* * 题目描述: 请实现一个函数,将字符串的每个空格替换为"%20"。 * 例如输入"We are happy",则输出"We%20are%20happy."。 */public class main { public static void main(String[] args) { String [] testTable = {"hello","A man, a plan, a canal: Panama","av12,./3原创 2020-10-28 09:47:53 · 91 阅读 · 0 评论 -
leetcode-647-回文子串-java
题目及测试package pid647;/* 647. 回文子串给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa" 提示: 输入的字符串长度不会超过 100原创 2020-10-19 13:30:42 · 197 阅读 · 0 评论 -
Manacher算法(马拉车算法)总结
目录简介算法扩展字符串Len数组计算Len数组代码理解代码简介Manacher算法是查找一个字符串的最长回文子串的线性算法。例如:leetcode-5-最长回文子串(longest palindromic substring)-javahttps://blog.csdn.net/xushiyu1996818/article/details/8378730...原创 2019-09-04 13:38:36 · 373 阅读 · 0 评论 -
后缀树总结-java版
目录后缀树简介字典树(前缀树)的概念后缀树的概念构造后缀树两种方法在平方时间内构件后缀树线性时间建立后缀树的理论直接在后缀树上操作 自动更新叶节点当新后缀出现在原先后缀树中线性时间建立后缀树的实现后缀树的应用后缀树简介字典树(前缀树)的概念可以参考 https://blog.csdn.net/xushiyu1996818/art...原创 2019-04-22 16:00:27 · 859 阅读 · 0 评论 -
敏感词过滤-DFA算法
目录DFA算法简介Java实现DFA算法实现敏感词过滤测试方法创建DFAMap根据DFAMap进行检验完整代码DFA算法简介在实现文字过滤的算法中,DFA是唯一比较好的实现算法。DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextst...原创 2019-04-15 16:08:29 · 11704 阅读 · 0 评论 -
kmp算法总结-java版
目录部分匹配表(PMT)(Next数组)介绍通俗介绍数学介绍推导出next数组使用next数组进行字符串匹配测试部分匹配表(PMT)(Next数组)介绍通俗介绍有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但KMP算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。我试着从...原创 2019-04-16 16:49:03 · 370 阅读 · 0 评论 -
leetcode-3-无重复字符的最长子串(longest substring without repeating characters)-java
题目及测试package pid003;/*无重复字符的最长子串给定一个字符串,找出不含有重复字符的最长子串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。示例 3:输入: "pwwkew"...原创 2018-11-02 10:54:37 · 177 阅读 · 0 评论 -
leetcode-5-最长回文子串(longest palindromic substring)-java
题目及测试package pid005;/*最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"*/public class main { public static...原创 2018-11-06 17:06:05 · 238 阅读 · 0 评论 -
leetcode-49-字母异位词分组(group anagrams)-java
题目及测试package pid049;import java.util.List;/*字谜分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["natt","tatn"...原创 2018-11-01 12:22:38 · 420 阅读 · 0 评论 -
stringbulider api总结
public final class StringBuilder extends Object implements Serializable, CharSequence一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换...原创 2018-08-10 11:26:55 · 370 阅读 · 0 评论 -
leetcode-344-反转字符串(reverse string)-java
题目及测试用例package pid344;/*反转字符串编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A"*/public c原创 2018-08-10 11:42:15 · 879 阅读 · 2 评论 -
leetcode-字符串总结
leetcode-344-反转字符串(reverse string)-java 字符串是一个整体,如果对字符串内部进行操作,可以用stringbuilder,也可以将string转为char数组,这个方法更为灵活...原创 2018-08-10 11:45:36 · 1072 阅读 · 1 评论 -
leetcode-242-有效的字母异位词(valid anagram)-java
题目及用例package pid242;/*有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。原创 2018-08-14 11:51:21 · 341 阅读 · 0 评论 -
leetcode-7-反转整数(reverse integer)-java
题目及用例package pid007;/* 颠倒整数给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后...原创 2018-08-12 16:34:40 · 822 阅读 · 0 评论 -
leetcode-387-字符串中的第一个唯一字符(first unique character in a string)-java
题目及用例package pid387;/* 字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.*/public class main { public static void main(Str...原创 2018-08-13 11:57:51 · 458 阅读 · 0 评论 -
leetcode-125-验证回文串(valid palindrome)-java
题目及用例package pid125;/*验证回文字符串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false*/...原创 2018-08-16 10:56:19 · 377 阅读 · 0 评论 -
leetcode-8-字符串转整数 (atoi)(String to Integer)-java
题目及用例package pid008;/*字符串转整数(atoi)实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括...原创 2018-08-17 11:31:16 · 487 阅读 · 0 评论 -
leetcode- 28-实现strStr()(implement strstr)-java
题目及用例package pid028;/*实现strStr()实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2...原创 2018-08-20 13:17:41 · 237 阅读 · 0 评论 -
leetcode-38-报数 (count and say)-java
题目及用例package pid038;/*数数并说报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21原创 2018-08-23 11:27:20 · 793 阅读 · 0 评论 -
leetcode-14-最长公共前缀(longest common prefix)-java
题目及用例package pid014;/*最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car&原创 2018-08-24 11:38:38 · 277 阅读 · 0 评论 -
java-String常用api总结
java.lang 类 Stringjava.lang.Object 继承者 java.lang.String所有已实现的接口: Serializable, CharSequence, Comparable<String> --------------------------------------------------------------------------...原创 2018-08-10 11:06:23 · 824 阅读 · 0 评论