题目概述: 给你一个字符串 s,找到 s 中最长的回文子串。 示例: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 算法思路: 对于单个字符串,其本身就是一个回文,对于长度大于1的字符串,首先需要看该字符的索引处为0和length-1的字符是否相等,如果相等然后再判断去掉首
暴力匹配 #include <iostream> #include <string> using namespace std; int strTsr(string haystack, string needle) { if (needle.empty()) return 0; int n = haystack.size(); int m = needle.size(); for (int i = 0; i < n; ++i
链接: https://codeforces.com/problemset/problem/1535/C t 组询问,每次给定一个仅包含字符 1 或 0 或 ? 字符串 s。定义一个子串是不稳定的当且仅当子串中任意相邻两数均不相同,如 101010…101010… 或 010101…010101…。其中 ? 可以变为 1 或 0 其中一种。请求出给定的 s
class Solution { public int lengthOfLongestSubstring(String s) { int len = s.length(), max = 0; Map<Character, Integer> map = new HashMap<>(); //try to extend the range [start, end] int start = 0; f
题目描述 定义:当一个字符串只有元音字母(aeiouAEIOU)组成,称为元音字符串。现给定一个字符串,请找出其中最长的元音字符子串,并返回其长度;如果找不到,则返回0。 子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。 解答要求时间限制:1000ms, 内存限制:256MB 输入 一个字
SA SA实际上求出两个数组\(sa,rk\)。 \(sa_i\)表示将所有后缀排序后排名第\(i\)小的后缀的编号,\(rk_i\)表示后缀\(i\)的排名。 满足其性质\(sa_{rk_i} = rk_{sa_i} = i\) 这里仅给出一个\(O(nlog^2n)\)的做法。 其他做法参见\(oiwiki\)。 点击查看代码 bool cmp(int i,int j){ i
给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-palindromic-substring 思路见代码: class Solu
一、题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 二、示例 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 三、解题思路 我们要明白最长回文子串的特点,最长回文子串的特点是呈现对称的现象,比如说aabbaa,或
题目: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 输
问题描述: 给你一个任意的字符串,输出它所有的子序列 例如:“abc” 输出:“a”,“b”,“c”,“ab”,“ac”,“bc”,“abc” 思路求解: 我们这道题,其实无非就可以分解成两个情况某个字符选,还是不选 我们可以遍历每个字符串,分为它们选了,或者没选这两种情况来判断,直到所有字符
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3:
不含重复字符的最长子串: 代码实现 public int longestSubStr(String str) { int max = 0; Deque<Character> deque = new ArrayDeque<>(); for (int i = 0; i < str.length(); i++) { if (!deque.contains(str.charAt(i))) {
后缀自动机的概念比较抽象,首先给出SAM的讲义 一、SAM的性质: 1.SAM是个状态机。一个起点,若干终点。原串的所有子串和从SAM起点开始的所有路径一一对应,不重不漏。所以终点就是包含后缀的点。 2.每个点包含若干子串,每个子串都一一对应一条从起点到该点的路径。且这些子串一定是里面
一、字符串前置知识 长度:$|s|$ 表示字符串 $s$ 的长度。 子串:从原串中选取连续的一段字符串,空串也是子串。 前缀:$pre(s,k)$ 表示 $s$ 前 $k$ 个字符构成的子串。 后缀:$suf(s,k)$ 表示 $s$ 后 $k$ 个字符构成的子串。 任何子串都是某个后缀的前缀。 最长公共前缀:$lcp(s,t)$ 表示 $s
substring是子串。例如,‘wee’ 是 ‘helloween’的substring,‘hwn’ 不是 ‘helloween’的substring。取子串的时候不能隔着字符取。 subsequence是子序列。例如,‘wee’ 和 ‘hwn’ 都是 ‘helloween’的subsequence。取子序列的时候可以隔着字符取。 palindromic substring 是回
链接:https://ac.nowcoder.com/acm/contest/23479/A 来源:牛客网 小红很喜欢红色(用'R'字母表示),但她非常讨厌紫色(用'P'字母表示)。 她想取一个连续子串,该子串包含至少 k 个'R'字符,且不能包含'P'字符。 你能告诉她有多少合法的方案可以取到吗? 注:只要连续子串的起始位置或终止位置不同,我
哈希表的主要作用: 把一个庞大的空间或值域映射到一个比较小的空间(10^5~10^6) 映射做法:x%(10^5~10^6);同时,取模的数要取成一个质数可以使冲突的概率最小。 因为值x的范围(10^9)比较大,映射的范围(10^5~10^6)比较小,所以可能会产生冲突(把若干不同的数映射成同一个数) 一、存储结构 题目:例题--
题意: 求原字符串s中 k阶回文串 的个数,k取遍1到|s| k阶回文串:左半子串与右半子串相同,且左右两半都是非空 k-1 阶回文串 \(|s|\le 5000\) 思路: \(f(l,r)\) 表示子串 \([l,r]\) 的回文阶数。初始:所有长度为1的子串都是1阶的。 从 \(f(l+1,r-1)\) 推到 \(f(l,r)\):若 \(s_l\neq s_r\) ,
link 也算是一道模板题了。 上一道题并没有提到的是,后缀数组还有一个很重要的应用,即\(height\)数组,以下简称h。\(h_i\)的定义是排名为i的后缀与排名为i-1的后缀的最长公共前缀长度,而h数组我们可以\(O(N)\)求得。方法如下。 首先有一个结论,\(h[rank[i-1]]-1\le h[rank[i]]\),证明没
题目 来源:LeetCode. 给定一个字符串 s 和一些 长度相同 的单词 words 。 找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑 words 中单词串联的顺序。 示例 1: 输入:s = "barfoothefooba
官方案例: 测试:
实现strStr() 题目链接 leetcode 题目描述 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很
1. 概述 string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。要想使用标准C++中s
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长
题目 给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata, 问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,返回3。 本题的子串需要满足长度为