/// <summary> /// 计算字符串中子串出现的次数 /// </summary> /// <param name=”str”>字符串</param> /// <param name=”substring”>子串</param> /// <returns>出现的次数</returns> static int SubstringCount(string str, string substring) {…
/* * 2 一个子串在整串中出现的次数. * "loveerlovetyloveuiloveoplove" * 思路: * 1,要找的子串是否存在,如果存在获取其出现的位置.这个可以使用indexOf完成. * 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串, * 而剩余字符串的起始位是出现位置+子串的长度. * 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录.  * 使用 indexOf()获取某个字符子串在整串中的位置,还使用…
今天查着用了用String类里的几个方法,分享下代码 题目要求:统计一个子串在指定字符串中出现的次数( 提示java字串出现了6次) public class SearchSameString { public static void main(String[] args) { // 定义俩个字符串 String shortStr = "java"; String longStr = "javasdfjavawerjavavsswetjavadfgdfgjavadfgdfbt…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题意:求模式串在主串中出现的次数,与模式串匹配的子串之间不可重叠. 思路:用kmp算法解决,在匹配更新结果后,重新定位模式串时,不可用j = next[j],应该直接让j定位到模式串开头. code: #include <cstdio> #include <cstring> ; char aa[MAXN]; char bb[MAXN]; int next[MAXN]; int l…
/** 题目:hdu3065 病毒侵袭持续中 链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065 题意:N(N <= 1000)个长度不大于50的模式串(保证所有的模式串都不相同), 一个长度不大于2000000的待匹配串,求模式串在待匹配串中的出现次数. 思路:ac自动机做发,val标记每一个病毒串编号,通过print函数统计每一个病毒出现的次数. AC自动机好文章:http://www.cppblog.com/menjitianya/archi…
http://acm.hdu.edu.cn/showproblem.php?pid=6153 首先相当于翻转两个串,然后求s2前缀在s1中出现的次数. 这是一个套路啦 首先把两个串结合起来,中间加一个'%'之类的分割 设dp[i]表示前缀1---i在本串中的出现次数和 那么从后开始dp,所有dp值一开始都是1,表示前缀出现了一次,就是自己本身. 转移,设当前去到第i位,则dp[next[i + 1] - 1] += dp[i] 就是ABACABA这样,已经知道了ABACABA出现了一次,然后前后…
KMP算法能够高效地匹配字符串,找出子串(T串)在主串(S串)中出现的首个位置的原算法网上已经有很多优秀的博文进行详细讲解,这里就不多赘述. 这篇博文主要是对KMP原算法稍作改动,使其能够在主串中把所有匹配的主串找出来. 找出首个匹配的算法好弄,next数组求出来后直接用来匹配,直到出现完全匹配的情况的时候就停止搜索把答案扔出来就行,但是想把所有T串找出来的话就得完全把S串搜完, 就算已经在S串中找到一个T串后也是不能马上停止搜索的. 难点就在已经完全匹配了一个T串以后怎么继续进行下一个匹配.…
题目链接:http://poj.org/problem?id=3461 题意:给你两个字符串word和text,求出word在text中出现的次数 思路:kmp算法的简单应用,遍历一遍text字符串即可,当前匹配的字符数达到word字符串的长度,即可确定word字符串出现一次了. code: #include <cstdio> #include <cstring> using namespace std; ; ; char word[MAXM]; char text[MAXN];…
问题描述: 给定两个字符串T, P.查找字符串P在字符串T中出现的次数. 解决方法: 典型的KMP算法的题目,在此使用的KMP算法为算法导论上介绍的算法.下一篇文章将详细介绍KMP算法的计算过程. 题目链接: http://hihocoder.com/problemset/problem/1015 源代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #define M 9999 #defin…
这样用,只会替换匹配到的第一个子串 str = 'I hava a pen ,I hava an apple,apple pen, pen apple' str = str.replace('apple', 'pear') //str='I hava a pen ,I hava an pear,apple pen, pen apple' 加上全局标识(g),替换全部子串 str = 'I hava a pen ,I hava an apple,apple pen, pen apple' str…
提供的是一种思路,和具体语言无关. string test = "good good study day day up"; string r = test.Replace("oo",""); int num = (test.Length - r.Length) /"oo".length; Console.WriteLine(num);…
这里要在后缀自动机的节点中维护一个从到达当前位置出现的字符串总个数 这里新添加进来的节点的状态出现的次数必然为1 另外包含所能达到这个节点所能到达的状态一定是将它作为父亲的点 那么说明将它作为父亲的点添加进来一定会使它的所有父亲状态数都+1 所以直接在添加节点结束后不断向上更新 #include <cstdio> #include <cstring> #include <iostream> using namespace std; #define N 200010 #d…
#include<stdio.h> #include<stdlib.h> int strTime(const char *str1, const char *str2, int *time) { int count = 0; char *p1 = str1; char *p2 = str2; //p1是第一次出现的位置 p1 = strstr(p1, p2); //注意这里不要写成*p1!=NULL 由于p1 是null的地址一旦读取*p1 会出错的!!!!不能读取操作系统的数据…
#include <stdio.h> #include <windows.h> int main() { ], b[]; char *temp; ; memset( a, ); //清空内存 memset( a, ); //清空内存 printf( "Please input source string: " ); gets(a); //从缓冲区获取源字符串. printf( "Please input find string: " ); g…
题目:给定一个字符串S(主串),一个字符串数组words,其中的字符串的长度相同.找到所有的子串位置,要求是words中字符串的一个连接: 举例: For example, given:s: "barfoothefoobarman"words: ["foo", "bar"] You should return the indices: [0,9]. 解题思路: 1. 采用窗口机制,假设此时每个单词的长度为wordlen; 2.   先将words…
求取出现的次数 :  #include<bits/stdc++.h> ; char mo[maxn], str[maxn];///mo为模式串.str为主串 int next[maxn]; inline void GetNext() { , j = -, len = strlen(mo); next[i] = j; while(i < len){ // if(j == -1 || mo[i] == mo[j]) next[++i] = ++j; // else j = next[j];…
目录 hdu6599题意: manacher+后缀自动机+倍增 \(O(nlog(n))\) manacher+后缀数组+二分 \(O(nlog(n))\) 回文树(回文自动机) \(O(n)\) @(hdu6599:求本质不同的回文串长度及数量) 欢迎交流 hdu6599题意: 传送门: here 求有多少个回文串的前\(⌈ \frac {len}{2} ⌉\)个字符也是回文串.(两组解可重复) 将这些回文串按长度分类,分别输出长度为\(1,2,...,n\)的合法串的数量. 前期分析: 首先…
KMP算法是一种模式匹配算法的改进版,其通过减少匹配的次数以及使主串不回朔来减少字符串匹配的次数,从而较少算法的相应代价,但是,事件万物是普遍归中的,KMP算法的有效性也是有一定的局限的,我将在本文的最后也讨论这个算法的局限性. 一般的匹配算法: KMP基本概念引入: 但是,其实我们会发现,上面的中间两个匹配步骤是没有必要的,因为他们的第一个匹配字母就不相同,完全没有可比性,而当我们在第四次匹配的时候,其实我们从模式串中就可得知,只有当模式串滑到这个地方的时候,它的匹配才是最有价值的,因为从模式…
病毒侵袭 HDOJ-2896 主要使用AC自动机解决,其次在query函数中改变一下,用来记录每个模板串出现的次数,还有insert函数中记录模板串的编号 需要注意最好使用结构体,而且不能一次性使用memset否则会超时 上次没有AC出现了output limit exceed问题,后来发现是我的num数组开的太小了,只开了505,实际上需要N的空间. 还有一个问题就是我以前提交的时候很容易就MLE,内存超限,直到我把AC自动机封存到一个结构体中,而且并不是一开始就使用memsettrie树上的…
求模式串在主串中出现的次数Sample Input 3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIANSample Output 130 #include <iostream> #include <cstring> using namespace std; ; int next[N]; char S[N], T[N]; int slen, tlen; void getNext() { int j, k; j = ; k = -; next[] = -;…
数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&tqId=11190 参与人数:2597    时间限制:1秒   空间限制:32768K 本题知识点: 数组 题目描述 统计一个数字在已排序数组中出现的次数. 样例输入: 2 3 3 3 3 4 51 3 6,5,3,3,1,0 3 样例输出: 4 2 分析:      数字在排序数组中出现的次数,首先想到…
一.前言: 在web中,为了丰富我们的内容,往往需要引用其它HTML文件,这时候就需要用到 iframe 标签,本文就主要记录一下使用iframe所需要注意的问题 iframe 所使用的环境(笔者所遇到的) 1. web代码兼容 PC端 和 移动端,这时候就想在移动端时把页面限制在固定的宽高范围中,于是就使用 iframe 把 相关页面限制在其中 2. web引用别人的 HTML 内容,就使用iframe 来实现 二.遇到的问题: 1. 如何判断当前是否在iframe中 if (self.fra…
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之间的字符…
Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 12484   Accepted: 3502 Description You may have wondered why most extraterrestrial life forms resemble humans, differing by superficial traits such as height, colour, wrinkles, e…
判断一个包是否存在于系统中(来自网络),经过测试,好用: public boolean checkBrowser(String packageName) { if (packageName == null || "".equals(packageName)) return false; try { ApplicationInfo info = getPackageManager().getApplicationInfo( packageName, PackageManager.GET_…
#include<stdio.h> #include<string.h> 函数名: strncmpi 功 能: 将一个串中的一部分与另一个串比较, 不管大小写 用 法: int strncmpi(char *str1, char *str2, unsigned maxlen); 程序 int main() {   char *buf1="AAA",*buf2="aaa";   int pos;   pos=strncmpi(buf1,buf2…
寻找数串中连续最大整数和且最大长度的子串 输入示例: 1000 -100 200 -200 100 -100 10 90 输出结果: 1100 分析: 分治法解决问题非常方便,依然分为三种情况:a[1], a[2]......a[mid-1], a[mid], a[mid+1]......a[n-1], a[n] 1.最大和数串位于a[mid]左边数串中: 2.最大和数串位于a[mid]右边数串中: 3.最大和数串包括a[mid]. 明显地,情况1,2是原问题的子问题,但情况3则并不是原问题子问…
shell中,我们可以通过简单的一个判断来判断命令是否存在 which "Command" > /dev/null if [ $? -eq 0 ] then echo command is exist else echo command not exist fi…
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案. 示例 2: 输入: "cbbd" 输出: "bb" class Solution: def longestPalindrome(self, s): """ :type s: str :rtype:…
php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpossubstr_count($haystack, $needle [,$offset [,$length]])其中参数:$haystack表示母字符串,$needl表示要查找的字符$offset表示查找的起点,$length表示查找的长度,均为可选参数 <?php $str="this is a test"; echo substr_count($str,…