URAL - 1423
2018-04-01 20:27
309 查看
一个很显然的思路就是,把串1复制一遍接在自己后面,然后将串2作为模式串,串1作目标串去匹配,如果匹配到就可以输出次数。唯一的坑点在于如果两个串原来就是相等的,那么一定要注意输出0…..
#include<cstdio> #include<iostream> #include<algorithm> #include<string> using namespace std; int next1[250005]; void getnext(string str) { next1[0]=-1;int j=0,k=-1; while(j<str.size()-1){ if(k==-1||str[j]==str[k]){ k++;j++;next1[j]=k; } else{ k=next1[k]; } } } int main() { int n,i,j;string str1,str2; cin>>n>>str1>>str2;int len=str1.size(); str1+=str1; getnext(str2);i=0,j=0; while(i<str1.size()){ if(j==-1||str1[i]==str2[j]){ if(j==str2.size()-1){ if(i==len-1)cout<<0<<endl; else cout<<len-(i-j)<<endl; return 0; } i++;j++; } else{ while(j>=0&&str1[i]!=str2[j]) j=next1[j]; } } cout<<-1<<endl; return 0; }
相关文章推荐
- URAL 1423 String Tale
- 字符串专项:Ural 1423
- Ural 1004 FLOYD最小环问题
- ural 1197. Lonesome Knight
- ural 1930 Ivan's Car(spfa)
- URAL - 1158 Censored! AC自动机+dp
- URAL 1910. Titan Ruins: Hidden Entrance
- Ural 2072 Kirill the Gardener 3
- Ural 1002 Phone Number (字典树 + dp)
- 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297
- URAL 1989 Subpalindromes 思路
- POJ 1423 BigNumber
- URAL1995-Illegal spices(贪心构造)
- URAL 2067. Friends and Berries
- K - Log Files URAL - 2073
- ural 2013 Neither shaken nor stirred
- URAL 2014 Zhenya moves from parents (线段树)
- URAL 1984. Dummy Guy(数学啊)
- URAL 1601. AntiCAPS (strings)
- ural 1930 Ivan's Car(spfa)