Java 确定string2是否与string1一起出现

Java 确定string2是否与string1一起出现,java,if-statement,for-loop,Java,If Statement,For Loop,给定两个字符串str1和str2作为输入,确定str2是否与str1一起出现 样本输入#1 样本输出#1 样本输入#2 样本输出#2 MyApproach 在我的函数中,我取了2个字符串。在for循环中,我检查字符串1中的每个字符位置是否与字符串2中的字符匹配。如果不匹配,我将p=0和count=0。如果匹配,我将增加我的count以及p。我还检查count是否等于第二个字符串的长度。如果匹配,我离开了循环返回true,否则返回falls public boolean occurs(String

给定两个字符串str1和str2作为输入,确定str2是否与str1一起出现

样本输入#1 样本输出#1 样本输入#2 样本输出#2 MyApproach

在我的函数中,我取了2个字符串。在for循环中,我检查字符串1中的每个字符位置是否与字符串2中的字符匹配。如果不匹配,我将p=0和count=0。如果匹配,我将增加我的count以及p。我还检查count是否等于第二个字符串的长度。如果匹配,我离开了循环返回true,否则返回falls

public boolean occurs(String str1, String str2)
{
    int l1=str1.length();
    int l2=str2.length();
    int p=0;
    int count=0;
    int j=0;
    for(;j<l1;j++)
    {
        char ch1=str1.charAt(j);
        char ch2=str2.charAt(p);
        if(ch1==ch2)
        {
            p++;
            count++;
        }
        else if(count==l2)
        {
            break;
        }
        else
        {
            p=0;
            count=0;
        }
    }
    if(l2==count)
    return true;
    else
    return false;
}

Parameters                         Actual Output    Expected Output

'Trisect Institute' 'Trisect'      null             true
出现公共布尔值(字符串str1、字符串str2) { int l1=str1.length(); int l2=str2.length(); int p=0; 整数计数=0; int j=0;
对于(;j而言,您面临的问题是因为while语句中包含return语句,因此返回并不总是可以到达的

您必须在

if (count == str2.length()) {
    return true;
} else {

    return false;
}

您所面临的问题是因为while语句中包含return语句,因此返回并不总是可以到达的

您必须在

if (count == str2.length()) {
    return true;
} else {

    return false;
}

您的代码有很多错误。但是,我建议使用Java提供的内置字符串函数之一,如string.indexOf()或string.contains()

  • 如果第一个字符不匹配,则返回true或false
  • 方法中没有return语句(它不应该编译)
  • 您正在检查字符索引范围,如果它们在同一范围内,则将它们都递增。这没有意义。您试图实现什么
  • 如果要进行不区分大小写的匹配,可以在开始比较之前使用String.toLower()
  • 如果第一个字符超出范围且不同,它将完全跳过检查
  • 没有任何注释可以解释您试图尝试的内容

我至少会尝试修复其中一些问题,并在循环的每次迭代中打印出结果(或使用调试器)以帮助您。

您的代码有很多问题。但是,我建议使用Java提供的内置字符串函数之一,如string.indexOf()或string.contains()

  • 如果第一个字符不匹配,则返回true或false
  • 方法中没有return语句(它不应该编译)
  • 您正在检查字符索引范围,如果它们在同一范围内,则将它们都递增。这没有意义。您试图实现什么
  • 如果要进行不区分大小写的匹配,可以在开始比较之前使用String.toLower()
  • 如果第一个字符超出范围且不同,它将完全跳过检查
  • 没有任何注释可以解释您试图尝试的内容
我至少会尝试修复其中一些问题,并在循环的每次迭代中打印结果(或使用调试器)以帮助您。

如果(count==l2)语句位于错误位置,则您的
ch1==ch2
不会检查此条件。以下可能会对您有所帮助:

public boolean occurs(String str1, String str2) {
    int l1=str1.length();
    int l2=str2.length();
    int p=0;
    int count=0;
    int j=0;
    for(;j<l1;j++) {
        char ch1=str1.charAt(j);
        char ch2=str2.charAt(p);
        if(ch1==ch2) {
            p++;
            count++;
        } else {
            p=0;
            count=0;
        }
        if(count==l2) {
            break;
        }
    }
    if(l2==count)
        return true;
    else
        return false;
}
出现公共布尔值(字符串str1、字符串str2){ int l1=str1.length(); int l2=str2.length(); int p=0; 整数计数=0; int j=0; for(;j您的
else if(count==l2)
语句位于错误的位置。在您的代码中,当
ch1==ch2
时,此条件不会检查。以下内容可能会帮助您:

public boolean occurs(String str1, String str2) {
    int l1=str1.length();
    int l2=str2.length();
    int p=0;
    int count=0;
    int j=0;
    for(;j<l1;j++) {
        char ch1=str1.charAt(j);
        char ch2=str2.charAt(p);
        if(ch1==ch2) {
            p++;
            count++;
        } else {
            p=0;
            count=0;
        }
        if(count==l2) {
            break;
        }
    }
    if(l2==count)
        return true;
    else
        return false;
}
出现公共布尔值(字符串str1、字符串str2){ int l1=str1.length(); int l2=str2.length(); int p=0; 整数计数=0; int j=0;
对于(;j如果您不担心从零开始构建功能,请使用String.contains()方法,否则请使用KMP或boyre moore文本搜索算法,您也可以尝试使用暴力方法,但如果您不担心从零开始构建功能,请使用String.contains()方法,否则使用KMP或boyre moore文本搜索算法,您也可以尝试使用蛮力方法,但效率不高{
public boolean occurs(String str1, String str2) {
    //write your code here
    int len1=str1.length();
    int len2=str2.length();

    for(int i=0;i<(len1-len2+1);i++)
    {   
        String str="";
        for(int j=i;j<i+len2;j++)
        {
            str=str+str1.charAt(j);
            if(str.equals(str2)) return true;
        }
    }
    return false;
}   
//在这里编写代码 int len1=str1.length(); int len2=str2.length(); 对于(int i=0;i
公共布尔值出现(字符串str1,字符串str2){
//在这里编写代码
int len1=str1.length();
int len2=str2.length();

对于(int i=0;iIs),有任何约束禁止您使用str1.contains(str2)
?@dounyy是的,除了concat和我使用的函数之外,我不能使用任何其他函数。有任何约束禁止您使用str1.contains(str2)?@dounyy是的,除了concat和我使用的函数之外,我不能使用任何其他函数。请尝试理解。请尝试理解。我想它需要指导而不是一个未注释的代码组。有些输入会得到赞赏。我想它需要指导而不是一个未注释的代码组。有些输入会得到赞赏。
if (count == str2.length()) {
    return true;
} else {

    return false;
}
public boolean occurs(String str1, String str2) {
    int l1=str1.length();
    int l2=str2.length();
    int p=0;
    int count=0;
    int j=0;
    for(;j<l1;j++) {
        char ch1=str1.charAt(j);
        char ch2=str2.charAt(p);
        if(ch1==ch2) {
            p++;
            count++;
        } else {
            p=0;
            count=0;
        }
        if(count==l2) {
            break;
        }
    }
    if(l2==count)
        return true;
    else
        return false;
}
public boolean occurs(String str1, String str2) {
    //write your code here
    int len1=str1.length();
    int len2=str2.length();

    for(int i=0;i<(len1-len2+1);i++)
    {   
        String str="";
        for(int j=i;j<i+len2;j++)
        {
            str=str+str1.charAt(j);
            if(str.equals(str2)) return true;
        }
    }
    return false;
}