G1. 唐纳德与子串 (Easy) Time limit per test: 1.0 seconds Memory limit: 256 megabytes 子串的定义是在一个字符串中连续出现的一段字符.这里,我们使用 s[l…r] 来表示 s 字符串从 l 到 r(闭区间)的子串.在本题中,字符串下标从 0 开始.显然,对于长度为 n 的字符串共有 n(n+1)2 个子串. 对于一个给定的字符串 s,唐纳德给出 q 次询问,第 i 次询问包括三个参数 li,ri,zi,问在 s[li…ri] …
Time limit per test: 1.0 seconds Memory limit: 256 megabytes 子串的定义是在一个字符串中连续出现的一段字符.这里,我们使用 s[l…r] 来表示 s 字符串从 l 到 r(闭区间)的子串.在本题中,字符串下标从 0 开始.显然,对于长度为 n 的字符串共有 n(n+1)2 个子串. 对于一个给定的字符串 s,唐纳德给出 q 次询问,第 i 次询问包括三个参数 li,ri,zi,问在 s[li…ri] 的所有子串中共有多少个恰好为 zi.…
题目大意: 给定一个长度<2000的串,再给最多可达10000的询问区间,求解区间字符串中的不同子串的个数 这里先考虑求解一整个字符串的所有不同子串的方法 对于后缀自动机来说,我们动态往里添加一个字符,每次添加一个字符进去,我们只考虑那个生成的长度为当前长度的后缀自动机的节点 那么这个节点可接收的字符串的个数就是( p->l - p->f->l ),也就是以当前点为最后节点所能得到的与之前不重复的子串的个数 那么这个问题就很好解决了,共2000个位置,以每一个位置为起点构建一次后缀…
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/38924981 近期在项目工作中有一个关于文本对照的需求,经过这段时间的学习,总结了这篇博客内容:求两个字符串的最大公共子串. 算法思想:基于图计算两字符串的公共子串.详细算法思想參照下图: 输入字符串S1:achmacmh    输入字符串S2:macham 1)第a步,是将字符串s1,s2分别按字节拆分,构成一个二维数组: 2)二维数组中的值如b所看到的,比方第一行第一列的值…
http://poj.grids.cn/practice/2744 描述现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串.输入输入的第一行是一个整数t (1 <= t <= 10),t表示测试数据的数目.对于每一组测试数据,第一行是一个整数n (1 <= n <= 100),表示已经给出n个字符串.接下来n行,每行给出一个长度在1和100之间的字符…
/** * 获取两个字符串的最大相同子串. 例:abegad acegab */public class TheSameString { public static void main(String[] args) { String s1 = "abegad"; String s2 = "acegab"; String maxString = maxSubString(s1, s2); System.out.println("最大的相同子串为:"…
微信小程序 JS判断一个字符串是否包含一个子串函数. //str 字符串,name子串     contains:function(str,name){         if(str.indexOf(name) > -1){          return 1;         }else{             return 0;         }     }     一.String.indexOf() var str = "access,substance,account,com…
Js中经常遇到判断一个字符串是否包含一个子串,java语言中有containes的方法,直接调用就可以了.除非引用第三方数据库,Js中没有contains方法. 为了实现更java语言中containes方法相同的效果,最简单的一种做法是利用js中字符串查找位置的方法indexOf(“o”大写).此方法的返回的值得可能有 -1,0,n(正整数)三种情况.0是当子串在字符串第1位开始包含的情况下返回,例子如下: <script> var str="he"; var strin…
文章出处:mysql判断一个字符串是否包含某子串 使用locate(substr,str)函数,如果包含,返回>0的数,否则返回0 例子:判断site表中的url是否包含'http://'子串,如果不包含则拼接在url字符串开头 update site set url =concat('http://',url) where locate('http://',url)=0  注意MySQL中字符串的拼接不能使用加号+,用concat函数…
题目 获取两个字符串中最大相同子串 前提 两个字符串中只有一个最大相同子串 解决方案 public class StringDemo { public static void main(String[] args) { String str1 = "abcwerthelloyuiodefabcdef"; String str2 = "cvhellobnm"; String str3 = getMaxSameString(str1, str2); System.out…
使用locate(substr,str)函数,如果包含,返回>0的数,否则返回0 例子:判断site表中的url是否包含'http://'子串,如果不包含则拼接在url字符串开头 update site set url =concat('http://',url) where locate('http://',url)=0    UPDATE shop_wxpay sw SET sw.`remarks_url` = CONCAT(sw.`remarks_url`,';')WHERE sw.`re…
题目大意: 给定n个字符串,求出现在不小于k/2个字符串中的最长子串. 二分找对应子串长度的答案,将所有字符串链接成一个长字符串求后缀数组,记录每一个位置本属于第几个字符串,利用height查询的时候, 根据记录的位置不断判断是否出现重复的字符串是在同一个字符串内的 #include <cstdio> #include <cstring> #include <vector> #include <iostream> using namespace std; t…
题目:Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s = "aab",Return 1 since the palindrome partitioning ["aa&quo…
今天又学到了一个函数 头文件:#include <string.h> strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:    char *strstr( char *str, char * substr ); [参数说明]str为要检索的字符串,substr为要检索的子串. [返回值]返回字符串str中第一次出现子串substr的地址:如果没有检索到子串,则返回NULL. [函数示例]strstr()函数的使用. #include<stdio.h> #inclu…
参考:http://blog.csdn.net/csdn_yaobo/article/details/50338025 要找一串字符串中,重复的字串长度,.例如ABCX1&ABC,中ABC重复了这道题呢021Abc9Abc1 看上图,这个图是按这个规则画的,如果字符串相等,dp[i][j]=dp[i-1][j-1]+1,否则为0,那么我们发现除了对角线部分的数字以外,其余部分的数字中,1,2,3出现了两次,如图红色字体,那么我们就可以得到长度为3的字串重复出现了两次,这样这个问题就基本解决. 下…
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke&qu…
转载自九章算法(地址) 题目: 假设s是一个无限循环的字符串”abcdefghijklmnopqrstuvwxyz”,s就是一个”...zabcdefghijklmnopqrstuvwxyza...”这样的字符串,现在给你另外一个字符串p,求p中存在多少个截然不同的子串,使得它们也是s的子串.p只包括英语的小写字母并且p的长度可能大于10000. 样例说明 输入:a 输出:1说明:只有'a'是s的子串. 输入:cac输出:2 说明:只有'a'和'c'是s的子串. 输入:zab 输出:6说明:'z…
T称为目标串(Target)或主串 ,P称为模式串(Pattren) 或子串 1. 简单字符串模式匹配算法 原理:用字符串P的字符依次与字符串T中的字符进行比较,首先将字符串P从第0个位置起与主串T的第pos个字符起依次进行比较对应字符, 如果全部对应相等,则表明已找到匹配,成功终止:否则将字符串P从第0个位置起与主串T的第pos+1个字符起依次进行比较对应字符, 过程类似.   如果直到匹配完主串T的所有字母 都没有找到,则匹配失败 2.首尾字符串模式匹配算法 原理:与简单字符串的基本原理相同…
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke&qu…
1. 具体题目 给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的.重复出现的子串要计算它们出现的次数. 示例 1 : 输入: "00110011" 输出: 6 解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”. 请注意,一些重复出现的子串要计算它们出现的次数.另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起. 示例…
1.JSP str:原始字符串, subStr:要查找的子字符串 <c:if test="${fn:contains(str,subStr)==true}"> </c:if> 2.JavaScript <span style="font-size:18px;"><script type="text/javaScript"> if (str.indexOf(subStr) >= 0) { } &…
1. ES6的includes, 返回 Boolean var string = "foo", substring = "oo"; string.includes(substring); // true string.includes(substring,2); // false , 第二个参数表示开始查找的位置 2. ES5 indexOf,返回子串起始位置,不包含则返回-1 var string = "foo", substring = &q…
转自:https://blog.csdn.net/zhouxinxin0202/article/details/77862615/ 1.string类函数find C++的string类提供了字符串中查找另一个字符串的函数find. 其重载形式为: string::size_type string::find(string &); 功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置.不存在则返回 string::npos. e.g. #include &l…
#第一种方式 :in a='abcdaac' b='a' c='db' print(b in a) print(c in a)  预览结果 #第二种方式:count()方法 a='abcdefgab' print(a.count('a'))  预览结果 #第三种方式:find()方法(find返回的是匹配的第一个字符串的位置,而rfind返回的是匹配的最后一个字符串的位置,找不到返回-1) a='abcdefgab' print(a.find('a')) print(a.rfind('a'))…
Sample Input 3aaa12aabaabaabaab0Sample Output Test case #12 23 3 Test case #22 2 //aa有2个a6 2 //aabaab有2个aab9 312 4 0  1  2 3 4 5 6 7 8 9 10 11 a  a b a a b  a a b a a b     的next数组为-1 0 1 0 1 2 3 4 5 6 7 8 9 #include<stdio.h> #include<iostream>…
/* * 3,两个字符串中最大相同的子串. * "qwerabcdtyuiop" * "xcabcdvbn" *  * 思路: * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中. *   如果存在,短的那个字符串就是最大子串. * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式取子串,去长串中判断是否存在. *   如果存在就已找到,就不用在找了. * 3.先找最大的子串,再递减子串找,找到,就停止 */ 原理图如图:…
转自: http://www.open-open.com/lib/view/open1419150233417.html Manacher算法 在介绍算法之前,首先介绍一下什么是回文串,所谓回文串,简单来说就是正着读和反着读都是一样的字符串,比如abba,noon等等,一个字符串的最长回文子串即为这个字符串的子串中,是回文串的最长的那个. 计 算字符串的最长回文字串最简单的算法就是枚举该字符串的每一个子串,并且判断这个子串是否为回文串,这个算法的时间复杂度为O(n^3)的,显然无法令人 满意,稍…
                                                                          Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10800   Accepted: 2967 Description You may have wondered why most extraterrestrial life forms resemble h…
前言 最近工作中需要写一个算法,而写完这个算法我却发现了一个很有意思的事情.需要的这个算法是这样的:对于A,B两个字符串,找出最多K个公共子串,使得这K个子串长度和最大.百度之没有这样的算法,然后就开始想了一些乱七八糟的想法,一一被自己举反例推翻了,直到最后找到了正确算法,我觉得这个思考过程值得记录一下. 思考过程 错误想法1:每次找最长公共子串,找到一个子串后,从A,B两个字符串中删除这个子串,之后在剩下的串中再找最长公共子串,像这样找K次. 举个反例: A=KABCDELMABCDEFGNF…
https://vjudge.net/problem/UVA-11107 题意:给定n个字符串,求出现在不小于n的一半个字符串的最长子串,如果有多个,则按字典序输出. 思路: 首先就是将这n个字符串连接起来,然后二分答案,每次只需要判断是否有一个长度为p的串在超过一半的串中连续出现,判断方法是扫描一遍height数组,把它分成若干段,每当height[i]小于p时开辟一个新段,则每一段的最初p个字符均相同.只要某一段中包含了超过n/2个原串的后缀,p就是满足条件的. #include<iostr…