题目大意: 给定一个长度<2000的串,再给最多可达10000的询问区间,求解区间字符串中的不同子串的个数 这里先考虑求解一整个字符串的所有不同子串的方法 对于后缀自动机来说,我们动态往里添加一个字符,每次添加一个字符进去,我们只考虑那个生成的长度为当前长度的后缀自动机的节点 那么这个节点可接收的字符串的个数就是( p->l - p->f->l ),也就是以当前点为最后节点所能得到的与之前不重复的子串的个数 那么这个问题就很好解决了,共2000个位置,以每一个位置为起点构建一次后缀…
Java:判断字符串中包含某字符的个数 JAVA中查询一个词在内容中出现的次数: public int getCount(String str,String key){ if(str == null || key == null || "".equals(str.trim()) || "".equals(key.trim())){ return 0; } int count = 0; int index = 0; while((index=str.indexOf(k…
/** * 判断字符串中某个字符存在的个数 * @param str1 完整字符串 * @param str2 要统计匹配个数的字符 * @return */ public static int countStr(String str1, String str2) { int count=0; if (str1.indexOf(str2) == -1) { return 0; } while(str1.indexOf(str2)!=-1){ count++; str1=str1.substrin…
题目 获取两个字符串中最大相同子串 前提 两个字符串中只有一个最大相同子串 解决方案 public class StringDemo { public static void main(String[] args) { String str1 = "abcwerthelloyuiodefabcdef"; String str2 = "cvhellobnm"; String str3 = getMaxSameString(str1, str2); System.out…
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLogLog",从而引出了Cardinality Estimation算法,以及学习它时参考的一些文章: http://blog.codinglabs.org/articles/algorithms-for-cardinality-estimation-part-i.html 从文章上看来,基数是指一个…
题目大意: 给定n个字符串,求出现在不小于k/2个字符串中的最长子串. 二分找对应子串长度的答案,将所有字符串链接成一个长字符串求后缀数组,记录每一个位置本属于第几个字符串,利用height查询的时候, 根据记录的位置不断判断是否出现重复的字符串是在同一个字符串内的 #include <cstdio> #include <cstring> #include <vector> #include <iostream> using namespace std; t…
今天又学到了一个函数 头文件:#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的字串重复出现了两次,这样这个问题就基本解决. 下…
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对“基数”以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了“HyperLogLog”,从而引出了Cardinality Estimation算法,以及学习它时参考的一些文章: http://blog.codinglabs.org/articles/algorithms-for-cardinality-estimation-part-i.html 从文章上看来,基数是指一个集合(这里的集合允许存在重复元…
知识点一:equalsIgnore 1.使用equals( )方法比较两个字符串是否相等.它具有如下的一般形式: boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象.如果两个字符串具有相同的字符和长度,它返回true,否则返回false.这种比较是区分大小写的. 2.为了执行忽略大小写的比较,可以调用equalsIgnoreCase( )方法.当比较两个字符串时,它会认为A-Z和a-z是一样的.其一般形式如…