백준 16916 - 부분 문자열
Updated:
Java
16916 번 - 부분 문자열
문제
접근 방법
코드
import java.util.*;
import java.io.*;
public class Main {
static int n, result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] text = br.readLine().toCharArray();
char[] pattern = br.readLine().toCharArray();
int nLen = text.length;
int len = pattern.length;
int[] pi = new int[len];
int j = 0;
for(int i = 1; i < len; i++) {
while(j > 0 && pattern[i] != pattern[j]) {
j = pi[j - 1];
}
if(pattern[i] == pattern[j]) {
pi[i] = ++j;
}
}
j = 0;
boolean flag = false;
for(int i = 0; i < nLen; i++) {
while(j > 0 && text[i] != pattern[j]) {
j = pi[j - 1];
}
if(text[i] == pattern[j]) {
if(j == len - 1) {
flag = true;
break;
}
j++;
}
}
if(flag)
System.out.println(1);
else
System.out.println(0);
br.close();
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}