Java如何统计字符串出现的次数
在Java中,我们可以使用以下几种方法来统计字符串出现的次数:
1、使用for循环遍历字符串,逐个字符进行比较。
2、使用Java内置的String类中的indexOf()
和lastIndexOf()
方法。
3、使用正则表达式匹配子串。
4、使用Java集合框架中的HashMap
或HashSet
。
5、使用第三方库,如Apache Commons Lang中的StringUtils
类。
下面我们详细介绍这几种方法的实现原理和代码示例:
方法1:使用for循环遍历字符串,逐个字符进行比较
这种方法的基本思路是遍历字符串的每个字符,然后与目标字符串进行比较,如果找到相同的字符,就将计数器加1,最后返回计数器的值作为结果。
public static int countOccurrences(String str, String target) { int count = 0; for (int i = 0; i < str.length(); i++) { if (str.substring(i).startsWith(target)) { count++; } } return count; }
方法2:使用Java内置的String类中的indexOf()
和lastIndexOf()
方法
这种方法的基本思路是先找到目标字符串在原字符串中第一次出现的位置,然后从这个位置开始向后查找,直到找不到为止,每次找到一个目标字符串,就将计数器加1,最后返回计数器的值作为结果。
public static int countOccurrences(String str, String target) { int count = 0; int index = str.indexOf(target); while (index != -1) { count++; index = str.indexOf(target, index + 1); } return count; }
方法3:使用正则表达式匹配子串
这种方法的基本思路是使用正则表达式来匹配目标字符串在原字符串中的所有子串,然后将匹配到的子串的数量作为结果返回,需要注意的是,这种方法可能会受到正则表达式的限制,例如不能处理包含特殊字符的字符串等。
import java.util.regex.Matcher; import java.util.regex.Pattern; public static int countOccurrences(String str, String target) { int count = 0; Pattern pattern = Pattern.compile(target); Matcher matcher = pattern.matcher(str); while (matcher.find()) { count++; } return count; }
方法4:使用Java集合框架中的HashMap
或HashSet
这种方法的基本思路是将原字符串转换为一个字符数组,然后遍历这个数组,将每个字符作为键存储在一个HashMap
或HashSet
中,每次遇到目标字符串的第一个字符时,就将其后面的所有字符添加到对应的集合中,最后返回集合的大小作为结果,这种方法的时间复杂度较高,但空间复杂度较低。
```javaimport java.util.HashMap;import java.util.HashSet;public static int countOccurrences(String str, String target) { int count = 0; HashMap<Character, HashSet<Integer>> map = new HashMap<>(); int[] charArray = str.toCharArray(); for (int i = 0; i < charArray.length; i++) { char key = charArray[i]; if (!map.containsKey(key)) { map.put(key, new HashSet<>()); } map.get(key).add(i); } for (HashSet<Integer> set : map.values()) { if (set.contains(charArray.length)) { count += set.size() * (set.size() + 1) / 2; } } return count; }
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/160859.html