我需要查找给定的子字符串是否包含在给定的字符串中。但是约束是我不能使用任何预定义的Java方法。 我尝试过如下。
public void checkAvailability()
{
len=st.length();
for(int i=0;i<len;i++)
{
for(int j=0;j<substr.length();j++)
{
if(st.charAt(i)==substr.charAt(j))
{
if(j!=substr.length()-1 && i!=st.length()-1)
{
if(st.charAt(i+1)==substr.charAt(j+1))
{
available=true;
//j++;
count++;
}
}
}
}
}
if(available)
{
System.out.println("The character is available " + count + " times");
}
else
{
System.out.println("The character is not availabe");
}
}
但它没有给出正确的答案。有人可以帮忙吗?
提前谢谢你......
答案 0 :(得分:2)
您的代码中存在一些错误 - 我将在不编写代码的情况下描述算法,以避免破坏您的学习练习:
st.length()-substr.length()
st.charAt(i+j)
和substr.charAt(j)
i
是第一次匹配的位置。请注意,这是最直接的算法。 st
很长时,它表现不佳,substr
有很多“误报”。一般来说,你可以做得更好,例如,使用KMP algorithm。