字符串
呆呆与笨笨
梦想是被追逐的,而不是幻想的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 1711 Number Sequence
#include #include int num[1000010],str[10020],next[10020]; void get(int m)//m表示匹配的字符串的长度 { int i=0,j=-1; next[0]=-1; while(i<m) { if(j==-1||str[i]==str[j]) next[++i]=++j;原创 2014-01-03 22:44:22 · 532 阅读 · 0 评论 -
hdu 2094 产生冠军(水题)
#include #include #include #include using namespace std; char s[2010][100],a[100],b[100]; int into[2010];//记录入度 int main() { int n,m,i,j,k; while(scanf("%d",&n),n){ memset(s,0,sizeof(原创 2014-08-14 08:58:36 · 486 阅读 · 0 评论 -
hdu 2572 终曲(水题)
#include #include #include #include #include using namespace std; int main(){ string s,s1,s2,s3; string str; int t,n,i,j,k; scanf("%d",&t); while(t--){ cin>>s1>>s2>>s3; n=s1.length(); str=s原创 2014-08-12 15:02:34 · 568 阅读 · 0 评论 -
hdu 1247 Hat’s Words(字典树)
题意:给你很多的单词,输出那些可以由其它的两个单词拼接起来的单词。 解法:先把所有单词插入到一个字典树中,然后暴力拆分每个单词,判断两段是不是都是单词,例如:abc 可以拆成 ab c和 a bc 分别判断是不是单词 如果两个都是单词就输出原创 2014-07-30 11:07:07 · 471 阅读 · 0 评论 -
ny 37 回文字符串(LCS)
#include #include #include using namespace std; int dp[1010][1010]; char s[1010],str[1010]; int LCS(int n){ int i,j; for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(s[i-1]==str[j-1]) dp[i][j]=dp[i-1][原创 2014-08-04 15:50:12 · 908 阅读 · 0 评论 -
poj 1153 Palindrome(回文字符串)
题意: 给你一串字符串,让你求最少加入几个字符,才能使得这个字符串是个回文串。 做法: 设a[i]是这个字符串,b[i]是这个字符串的逆序串。 那么a[i],b[i]的最长公共子序列就是所求的字符串里拥有的最大的回文串。 然后用总串长减去最大的回文串长度即为所求。 求最长公共子序列的公式为: dp[i][j]=max(dp[i-1] [j],dp[i][j-1]) if(a[i]=原创 2014-08-04 15:36:53 · 525 阅读 · 0 评论 -
hdu 1106 排序(字符串的分割)
#include #include #include #include using namespace std; int main(){ char s[1010]; int num[1010]; int n,m,i,j,t; while(~scanf("%s",s)){ memset(num,0,sizeof(num)); n=strlen(s); for(j=i=0;i原创 2014-07-30 09:29:58 · 473 阅读 · 0 评论 -
hdu 1251 统计难题(字典树)
字典树 #include #include #include //构造字典树,26叉树,根结点为空 typedef struct node{ node *child[26];//字符集大小 int n;//记录该字符出现次数 }; node *root;//树是通过指针形式来表达的 void insert(char *s){//创建字典树原创 2014-04-20 11:18:30 · 565 阅读 · 0 评论 -
KMP算法
#include #include #include using namespace std; int next[10010]; char s[1000010],str[10010]; void Get(int m){ int i,j; i=0,next[0]=j=-1; while(i<m){ if(j==-1||str[i]==st原创 2014-07-23 17:09:14 · 391 阅读 · 0 评论 -
hdu 2203 亲和串
strstr()函数: 包含文件:string.h 函数名: strstr 函数原型:extern char *strstr(char *str1, char *str2); 功能:从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。 返回值:返回该位置的指针,如找不到,返回空原创 2014-01-15 11:33:10 · 595 阅读 · 1 评论 -
hdu 1306 String Matching
#include #include int main() { int s[1010],i,j,t,r,n,m,x,y; char a[1010],b[1010]; while(scanf("%s",a)&&(strcmp(a,"-1"))) { scanf("%s",b); memset(s,0,sizeof(s)); n=strlen(a); m=strlen(b);原创 2014-01-15 11:16:25 · 660 阅读 · 1 评论 -
南阳 132 最长回文子串
#include #include #include char str[5010]; int pos[5010]; char ch[5010]; int main() { int i,j,k; int T; int len; int max; int from,to; scanf("%d%*c",&T); //getchar();原创 2014-01-06 22:38:18 · 725 阅读 · 0 评论 -
南阳 658 字符串右移
#include #include char a[105]; int main() { char b; int c; while(scanf("%s%c%d",a,&b,&c)!=EOF) { int d,len,i; len=strlen(a); d=c%len; for(i=len-d;i<len;i++) putchar(a[i]); for(i=0;i<len-d;i++) putchar原创 2014-01-06 22:37:21 · 533 阅读 · 0 评论 -
hdu 2072 单词数
#include #include int main() { char s[100],str[100][100],g[100]; int n,m,i,a,b; while(gets(s)&&strcmp(s,"#")) { n=strlen(s); for(a=b=i=0;i<n;i++) { if(s原创 2014-01-06 22:12:17 · 622 阅读 · 0 评论 -
hdu 2206 IP的计算
#include #include int main() { char s[110]; int n,m,i,a,b,t; int sum[10],str[10]; while(gets(s)) { memset(sum,0,sizeof(sum)); memset(str,0,sizeof(str)); n=s原创 2014-01-06 22:04:37 · 1016 阅读 · 0 评论 -
hdu 3068 最长回文(manacher算法)
时间复杂度:O(n) #include #include #define N 110010 char s[N],str[2*N];//s代表原来的字符串,str代表插入之后的字符串 int pre[2*N];//表示以i为中心的(包含i这个字符)回文串半径长 int Min(int a,int b){ return a>b?b:a; } int main(){原创 2014-07-07 09:35:56 · 473 阅读 · 0 评论
分享