【发布时间】:2017-01-03 16:59:45
【问题描述】:
我正在尝试解决这个问题,但它似乎没有任何效果。我试图搜索问题,但所有其他答案都使用方法或数组,我们还没有研究过它们,所以我只能用循环来解决问题。这是问题:
编写一个程序,返回一个字符串在另一个字符串中出现的次数。
例如
输入:
第一个字符串:the
第二条:学生们在工程学院努力工作,因为他们喜欢它
输出:
3
这是我尝试过的:
Scanner input = new Scanner(System.in);
String s1 = input.nextLine();
String s2 = input.nextLine();
int count = 0;
String text="";
for(int i = 0; i<s1.length(); i++){
for(int j =0; j<=s2.length() ; j++){
if(s1.charAt(i)==s2.charAt(j) && i ==0){
for(int m=1; m<s1.length();m++){
if(s1.charAt(i+1)==s2.charAt(j+1)){
if(m==s1.length()){
count++;
}else{
break;
}
}
}
}
}
}
System.out.println(count);
我认为我的逻辑有问题。这就是我的想法:程序应该检查第一个字符串的第一个字母,然后检查它是否检查它是否等于第二个字符串的第一个字母,然后如果它不等于它,那么程序应该循环遍历第二个字符串,直到它找到一个等于第一个字符串的第一个字母的字母,如果它找到一个等于第一个字符串的字母,它检查第一个字符串的第二个字母是否等于另一个字符串的下一个字母,如果是,那么它检查这是否是第一个字符串的最后一个字母,如果是,则计数增加一,如果不是,则循环下一个字符。我尝试通过其他几种方法来完成我的代码以外的工作。有人可以帮我解释一下逻辑吗?
【问题讨论】:
-
你试过调试你的程序吗?因为那是你应该做的。
-
@f1sh 我不知道如何调试这是我学习编程的第一门课程,但是除非我运行它,否则我不会在代码中遇到任何错误,它会给出索引超出范围异常
-
你做到了 O(n^2),你可以做到 O(n)
-
@maya91 这是另一个不使用数组的stackoverflow.com/a/6267655/7098259
标签: java string loops nested-loops