字符串 "csagmtacsmgtcs" 中統計 "cs" 出現次數(預期 3 次)。
String str = "csagmtacsmgtcs";
Pattern p = Pattern.compile("cs");
Matcher m = p.matcher(str);
int count = 0;
while (m.find()) count++;
System.out.println(count); // 3
注意:若子串含特殊字符(如 "c.s"),需 Pattern.quote("c.s") 轉義。
String str = "csagmtacsmgtcs";
String target = "cs";
int count = 0;
int idx = 0;
while ((idx = str.indexOf(target, idx)) != -1) {
count++;
idx += target.length(); // 非重疊匹配
}
System.out.println(count);
long count = IntStream.iterate(0, i -> i + 1)
.limit(str.length())
.filter(i -> str.startsWith(target, i))
.count();
| 方法 | 時間複雜度 | 適用場景 |
|---|---|---|
| indexOf 循環 | O(n*m) | 簡單子串、極高性能要求 |
| 正則 Matcher | O(n) | 複雜模式、需捕獲組 |
| Stream | O(n*m) | 函數式代碼風格、並行流 |