我无法计算另一个字符串中的匹配字符串

时间:2019-07-06 07:35:16

标签: java

String s1 = "aabbccaa";
String s2 = "aa";

我需要计算s2s1重复了多少次。我尝试了没有运气的拆分文本。有人可以帮忙吗?

    String s1 ="aabbccaa";
    String s2 = "aa";
    int count = 0;
    for(int i = 0; i < s1.length(); i++) {
        for(int j = 0; j < s2.length(); j++) {
            if(s1.charAt(i) == s2.charAt(j)) {
                count++;
            }
        }

    }
    System.out.println(count);
    }
}

3 个答案:

答案 0 :(得分:0)

我使用正则表达式。不确定这是否是您想要的 从输入s2创建parttern,并将其与s1匹配。 Match将创建一个列表匹配器并计算出答案。

    public int countString(String s1, String s2) {
        Pattern pattern = Pattern.compile(s2);
        Matcher matcher = pattern.matcher(s1);

        int count = 0;

        while (matcher.find()) {
            count++;
        }

        return count;
    }

输出为2

答案 1 :(得分:0)

public class Solution {

public static void main(String[] args) {
    String s1 ="aabbccaassssASaatestaa";
    String s2 = "aa";
    // split the string S1 by  s2 
    String a[] = s1.split(s2); 


    //Output will be 4 - because 'aa' 4 times in s1
    System.out.println(a.length);
}
}

Output - 4

如果发生重叠,则可以使用“ matcher”来获取其他字符串中的匹配字符串数。 https://www.tutorialspoint.com/javaregex/javaregex_matcher_replaceall.htm

 String s1 ="aaaassssaassaass";
    String s2 = "aa";

   Pattern pattern =Pattern.compile(s2);
   Matcher matcher = pattern.matcher(s1); 
    int i = 0;
    while(matcher.find()){
        i++;
    }
    //Out put will be 4
    System.out.println(i);

Working Demo

答案 2 :(得分:-1)

您可以使用indexOf方法。

String indexOf(String str):此方法返回指定子字符串首次出现在此字符串中的索引。如果它不是作为子字符串出现,则返回-1。