题目链接:[传智杯 #4 决赛] 小智的疑惑
题目描述
传智专修学院给了小智一个仅包含小写字母的字符串
s
s
s,他想知道,里面出现了多少次子串 chuanzhi
呢。
我们称一个字符串
t
t
t 是
s
s
s 的子串,当且仅当将
s
s
s 的开头若干个(可以为 0 个)连续字符和结尾若干个(可以为 0 个)连续字符删去后,剩下的字符串和
t
t
t 相同。例如,我们称 ab
是 abc
的子串,但 ac
不是 abc
的子串。
输入格式
输入只有一行一个字符串,表示字符串 s s s。
输出格式
输出一行一个整数表示答案。
样例 #1
样例输入 #1
welcometochuanzhicupchuanzhi
样例输出 #1
2
提示
数据规模与约定
对于全部的测试点,保证 1 ≤ ∣ s ∣ ≤ 4 × 1 0 5 1 \leq |s| \leq 4 \times 10^5 1≤∣s∣≤4×105, ∣ s ∣ |s| ∣s∣ 表示 s s s 的长度,且 s s s 中只有小写字母。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String str = "chuanzhi";
int strLen = str.length();
int count = 0;
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
int countLen = s.length() - strLen + 1;
for (int i = 0; i < countLen; i++) {
if (s.charAt(i) == str.charAt(0)) {
if (s.substring(i, i + strLen).equals(str)) {
count++;
}
}
}
System.out.println(count);
}
}