我正在关注这个在线Java课程,在每次会议之后几乎没有任务,我似乎无法解决这个问题。
我知道这不是练习的重点,但我尝试了一切,我看不到任何其他方式。
编写一个程序,返回另一个字符串中出现的字符串数。例如:
输入:
第一个字符串:
第二个字符串: 学生正在 工程学院努力工作,因为**喜欢它
输出:
3
注意:您应该使用嵌套循环。不要使用像indexOf或substring
这样的方法到目前为止,这是我的代码,我知道它不完整,而且我很确定大多数决策都不需要。
编辑:这是一个C#代码,我正在测试Java和C#
String Text1 = Console.ReadLine();
String Text2 = Console.ReadLine();
int counter = 0;
for (int y = 0; y < Text1.Length; y++)
{
for (int x = 0; x < Text2.Length; x++)
{
if (Text1[y] == Text2[x])
{
if (y + 1 < Text1.Length && x + 1 < Text2.Length)
{
if (Text1[y + 1] == Text2[x + 1])
{
}
}
}
}
}
答案 0 :(得分:1)
public static int count(String text1, String text2)
{
int res = 0;
for (int i=0;i<text2.length()-text1.length();i++)
{
if (text1.charAt(0) == text2.charAt(i))
{
boolean found = true;
for (int j=0;j<text1.length() && found;j++)
if (text1.charAt(j) != text2.charAt(i+j))
found = false;
if (found)
res++;
}
}
return res;
}
答案 1 :(得分:1)
由于您正在进行练习,我不会修复您的代码,但可以帮助您自行修复。
首先,一些基础知识:在Java中,您使用charAt(i)
来访问单个字符。例如,
char ch = Text1.charAt(3);
从字符串的开头获取第四个字符(索引从零开始)。
现在对于算法:你希望迭代第二个字符串的所有位置后面有足够的字符,以便与第一个字符串匹配。这意味着索引从零(包括零)到位置Text2.length()-Text1.length()
,不包括在内。这是潜在匹配的起始位置 - 让我们称之为p
。
给定位置p
,您希望从零开始遍历Text1
的所有字符,并将它们与位置Text2
处的字符开头的p
个字符进行比较。我们假设Text1
中的索引称为i
,它从零(含)到Text1.length()
,独占。然后,您希望将Text1.getChar(i)
与Text1.charAt(i+p)
进行比较。
在宣布匹配之前,您需要与Text1
的所有字符完成比较。您需要知道外部循环中的结果,因此您希望使用bool
标志。在内循环之前将标志设置为true
。如果发现不匹配,请将标记设置为false
,然后退出循环。
如果内循环后标志为true
,则递增计数器。
答案 2 :(得分:0)
@么 - 由于这是一个赋值,我建议你遵循String.class中的“public int indexOf(String str)”方法,并通过少量修改来复制类似的东西来解决你的问题。