题目:1368: 简单模式匹配算法
描述:给你两个字符串A与B,请问B是否作为子串在A中出现过?
/**
* 串的 朴素模式匹配算法 (暴力子字符串查找算法)
*/
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
/**
* 朴素匹配算法
* @param S : 主串
* @param T : 子串
* @return
*/
int indexSubString(string S, string T) {
int sLen = S.length();
int tLen = T.length();
if (tLen > sLen) return -1;
int i = 0, j = 0;
while (i < sLen && j < tLen) {
if (S[i] == T[j]) {
i++;
j++;
} else {
i = i - j + 1; // 位序从1开始计数
j = 0;
}
}
if (j == tLen) return i - tLen + 1;
return -1; // 未找到匹配
}
int main(){
string S,T;
cin >> S >> T;
indexSubString(S,T) == -1 ? printf("NO") : printf("YES");
}
运行结果
网友评论