java编写一个实验程序,给定两个字符串s和t,求串t在串s中不重叠出现的次数
时间: 2023-06-01 07:05:56 浏览: 116
好的,这是一个计算问题,我可以帮您回答。以下是Java编写的实验程序,用于计算给定两个字符串s和t,求串t在串s中不重叠出现的次数:
```java
public class Main {
public static void main(String[] args) {
String s = "abcdabcdabcdabcd"; // 串s
String t = "bc"; // 串t
int count = 0;
int index = 0;
while ((index = s.indexOf(t, index)) != -1) {
count++;
index += t.length();
}
System.out.println("串t在串s中不重叠出现的次数为:" + count);
}
}
```
请根据您的需求修改字符串s和t的值,以获取正确的计算结果。
相关问题
java编写一个实验程序,给定两个字符串s和t,求串t在串s中不重叠出现的次数思路
可以使用滑动窗口的思想,以t的长度m为窗口大小,在s上滑动窗口,比较窗口内的字符串是否与t相等。如果相等,则计数器加1,窗口向右滑动一个字符继续比较。如果不相等,则窗口向右滑动一个字符继续比较。直到窗口滑动到s的末尾为止。最终计数器的值即为串t在串s中不重叠出现的次数。以下是Java代码:
```
public static int countNonOverlap(String s, String t) {
if (s == null || t == null || s.length() < t.length()) {
return 0;
}
int count = 0;
int m = t.length();
for (int i = 0; i <= s.length() - m; i++) {
if (s.substring(i, i + m).equals(t)) {
count++;
i += m - 1;
}
}
return count;
}
```
JAVA编写一个程序,给定两个字符串s和t,求串t在串s中不重叠出现的次数
以下是Java代码实现:
```
public class StringMatch {
public static int countMatches(String s, String t) {
int count = 0;
int index = s.indexOf(t); // 获取t在s中第一次出现的位置
while (index != -1) {
count++; // 计数器加1
index = s.indexOf(t, index + 1); // 查找下一个位置
}
return count;
}
public static void main(String[] args) {
String s = "abcdeabcdabc";
String t = "abc";
int count = countMatches(s, t);
System.out.println("字符串t在字符串s中不重叠出现的次数为:" + count);
}
}
```
代码说明:
1. `countMatches` 方法接受两个字符串参数 `s` 和 `t`,返回串 `t` 在串 `s` 中不重叠出现的次数。
2. 使用 `indexOf` 方法获取 `t` 在 `s` 中第一次出现的位置。如果 `indexOf` 方法返回 `-1`,表示 `t` 未出现在 `s` 中,则直接返回计数器 `count`。
3. 如果 `t` 在 `s` 中出现了,则计数器 `count` 加 1,并使用 `indexOf` 方法查找下一个位置。
4. 循环直到 `indexOf` 方法返回 `-1`,表示 `t` 已经在 `s` 中全部查找完毕。
5. 在 `main` 方法中测试 `countMatches` 方法。
阅读全文