数据结构实验之串二:字符串匹配(串)
来源:互联网 发布:机器人算法工程师 编辑:程序博客网 时间:2024/06/01 14:50
Think:
继前面两篇1650行和400行代码相比, 这个就比较正常了;
主要就是用串的 方法来做
Problem Description
给定两个字符串string1和string2,判断string2是否为string1的子串。
Input
输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2,string1和string2中保证不出现空格。(string1和string2大小不超过100字符)
Output
对于每组输入数据,若string2是string1的子串,则输出”YES”,否则输出”NO”。
Example Input
abc
a
123456
45
abc
ddd
Example Output
YES
YES
NO
#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3ftypedef struct{ char *ch; int length;}String;int initstring(String &S)//³õʼ»¯{ S.ch = (char *)malloc(INF * sizeof(char)); if (!S.ch) exit(0); S.length = 0; return 1;}void StrAssign(String &S, char str[]){ int len = 0; int k = 0; while(str[len] != '\0') len ++; for (int i = 0;i <= len - 1;i ++) { if (str[i] != ' ') { S.ch[k ++] = str[i]; S.length ++; } }}int index(String &A,String &B){ int i,j; if (B.length > A.length) { cout << "NO" << endl; return 0; } j = 0; int k; for (i = 0; i < A.length; i ++) { k = i; while (A.ch[i]==B.ch[j]) { j ++; i ++; if (j >= B.length) { cout << "YES" << endl; return 0; } if (A.ch[i] != B.ch[j]) { j = 1; i = k; break; } } } cout<<"NO"<<endl; return 0;}//int judge(String &S)//{// int i = 0;// int j = S.length - 1;// int flag = 1;// for (i = 0;i <= j;)// {// if (S.ch[i] != S.ch[j])// {// flag = 0;// return flag;// }// i ++;// j --;// }// return flag;//}////int Strcmp(char str1[])//{// int flag = 0;// if (str1[0] == '2' && str1[1] == '0' && str1[2] == '1' && str1[3] == '3')// flag = 1;// return flag;//}//void Concat(String &T,String &A, String &B)//{// int i;// int k = 0;// for (i = 0;i <= A.length - 1;i ++)// T.ch[k ++] = A.ch[i];// for (i = 0;i <= B.length - 1;i ++)// T.ch[k ++] = B.ch[i];// T.length = A.length + B.length;//}//void Display(String &T)//{// int i;// for (i = 0;i <= T.length - 1 ;i ++)// {// if (i == T.length - 1)// cout << T.ch[i] << endl;// else// cout << T.ch[i];// }//}int main(){ char str1[1000050]; char str2[10050]; while(cin >> str1) { cin >> str2; String A, B; initstring(A); initstring(B); StrAssign(A , str1); StrAssign(B , str2); index(A , B); }}
阅读全文
0 0
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- nodejs对mongodb数据库的增删改查操作(转载)
- 一个Java高级工程师的进阶之路
- emacs使用
- 在腾讯蓝鲸平台上存储emoji表情的一种解决方案
- 设计模式笔记之状态模式
- 数据结构实验之串二:字符串匹配(串)
- 群环域
- EndNote参考文献格式_国标
- 操作Lifecycle
- [RK3288][Android6.0] 调试笔记 --- 开机动画时间的确定
- Android之Litepal的使用
- [GNU/Linux] 常见的IO模型
- bitmap的六种压缩方式,Android图片压缩
- hive内部表、外部表、分区表、视图