Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回字符串“的次数”;你好/你好/你好……”;出现在给定字符串中的任意位置_Java_Loops_If Statement - Fatal编程技术网

Java 返回字符串“的次数”;你好/你好/你好……”;出现在给定字符串中的任意位置

Java 返回字符串“的次数”;你好/你好/你好……”;出现在给定字符串中的任意位置,java,loops,if-statement,Java,Loops,If Statement,返回字符串“hello/hello/…etc”在给定字符串中任何位置出现的次数 问题的不同之处在于 字符串hello可以是任何形式,即大写或小写 样本输入#1 计数(“abc你好定义”) 样本输出#1 一, 样本输入#2 计数(“你好,你好,你好,好”) 样本输出#2 二, 样本输入#3 计数(“hi”) 样本输出#3 0 MyApproach public int count(String str) { String str1="Hello"; int l

返回字符串“hello/hello/…etc”在给定字符串中任何位置出现的次数

问题的不同之处在于

字符串hello可以是任何形式,即大写或小写

样本输入#1
计数(“abc你好定义”)

样本输出#1
一,

样本输入#2
计数(“你好,你好,你好,好”)

样本输出#2
二,

样本输入#3
计数(“hi”)

样本输出#3
0

MyApproach

public int count(String str)
    {
      String str1="Hello";

        int l=str.length();
        int l1=str1.length();
        if(l<l1)
        {
         return 0;
        }
        else
        {
           int count=0;
           int p=0;
           int j=0;
           while(j<l)
           {
            char c=str.charAt(j);
            char c1=str1.charAt(p);
            if(c==c1)
             {
               p++;

               if(p==l1)
               {
                count++;
                p=0;
               }  

             }
             else
             {
                 p=0;
             }
             j++;

           } 

     return count;
    }

}

Output       TestcaseParameters Testcase Actual Answer  Expected

No output    'HELLO how are you'               0             1
公共整数计数(字符串str)
{
String str1=“Hello”;
int l=str.length();
int l1=str1.length();

如果这是一项学校作业,请说明。 否则,你需要在谷歌上问一个问题,比如: “计算字符串java中的出现次数”之类的。 这将为您提供-tada-stackoverflow:


希望能有所帮助。

我想知道你的代码是如何编译的。c1甚至没有声明。我可能会使用这样的逻辑:

str1.toUpperCase().split(str2.toUpperCase).length()-1
str1
beginsWith或endsWith
str2
时,上述代码不会返回正确答案。下面是一个更好的版本:

public static int count(String str1, String str2) {
    int count = 0;
    int len1 = str1.length();
    int len2 = str2.length();
    for (int i=0;i<=len1-len2;++i){
        if ((str1.substring(i,i+len2)).equalsIgnoreCase(str2)) {
            ++count;
        }
    }
    return count;
}
步骤2:

str1: *****
str2:  **
str1: *****
str2:   **
步骤3:

str1: *****
str2:   **
步骤4:

str1: *****
str2:    **
如果您希望在上述情况下,
AA
只计算一次,以下是代码:

public static int count(String str1, String str2) {
    int count = 0;
    int len1 = str1.length();
    int len2 = str2.length();
    for (int i=0;i<=len1-len2;){
        if ((str1.substring(i,i+len2)).equalsIgnoreCase(str2)) {
            ++count;
            i+=len2;
        }else{
            ++i;
        }

    }
    return count;
}
步骤2:

str1: *****
str2:  **
str1: *****
str2:   **
它不会比较前面步骤中已经比较过的任何字符


我根据您的示例输入数据测试了代码,它们都返回了预期结果。

这是一个非常直观的解决方案:

public static void main(String[] args) {
    System.out.println(count("hellohellohellohihihihihihihellohihhihello")); // Prints : 5
}

public static int count(String str){
    String str1 = "hello";
    String str2 = str.toLowerCase();
    int index = 0;
    int count = 0;

    while (true){
        if (str2.contains(str1)){
            count++;
            str2 = str2.substring(str2.indexOf(str1) + str1.length(), str2.length());
        } else {
            return count;
        }
    }
}

//在本文中,我们将每个大写字符改为小写,以便与s2进行比较 公共整数计数(字符串str){ 字符串s1=“”;字符串s2=“你好”;int l2=s2.length();int count=0

    int l1=str.length();
    for(int i=0;i<=l1-l2;i++){
        for(int j=i;j<l2+i;j++){
            char ch=str.charAt(j);
            if(ch>=65&&ch<=90){
                ch=(char)(ch+32);
                s1=s1+ch;
            }
            else
            s1=s1+ch;
        }
        if(s1.equals(s2)){
            count++;
        }
//in that line i have removed the data of string s1 to form new string again
           s1="";
    }return count;

}
int l1=str.length();

对于(int i=0;i@RileyCarney
contains
对获取计数没有帮助。可能重复的是
+32
-32
逻辑,用于处理大写和小写?您可以查看以获得更好的方法。我已更新了代码。唯一的区别是我需要找到的字符串模式可以是I吗在任何情况下,@ Jasonarora:在第一个版本中我都不清楚。但是你不能把所有的东西转换成小写,并用另一个问题中的一种方法吗?我赞成你,但实际上这不是正确的,我认为应该编辑。如果你好是在开始,在结尾或者在中间,结果会不同。谢谢YassinH。ajaj.这是我头脑中的一些伪代码。我会编辑和完善它。没问题。但它很聪明:)@ElgsQianChen我已经更新了我的代码。先生,你能告诉我我犯了什么错误吗。因为我会保留你的代码作为参考。谢谢@YassinHajaj。我编辑了我的答案,并制作了一个更严肃的版本。