Java 确定string2是否与string1一起出现
给定两个字符串str1和str2作为输入,确定str2是否与str1一起出现 样本输入#1 样本输出#1 样本输入#2 样本输出#2 MyApproach 在我的函数中,我取了2个字符串。在for循环中,我检查字符串1中的每个字符位置是否与字符串2中的字符匹配。如果不匹配,我将p=0和count=0。如果匹配,我将增加我的count以及p。我还检查count是否等于第二个字符串的长度。如果匹配,我离开了循环返回true,否则返回fallsJava 确定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
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()
- 如果第一个字符超出范围且不同,它将完全跳过检查
- 没有任何注释可以解释您试图尝试的内容
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;
}