首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java統計子串出現次數:sop打印int類型導致編譯錯誤

     編輯:程式設計疑難解答

錯誤代碼

sop(getCount(s, "kk"));  // getCount返回int
private static void sop(String str) { System.out.println(str); }  // 參數為String

錯誤原因

Java不支持 int 到 String 的隱式轉換,sop 期望 String 實參,實際傳入 int,編譯失敗。

修正方式

// 方式1:顯式轉字符串
sop(getCount(s, "kk") + "");

// 方式2:重載sop
private static void sop(int i) { System.out.println(i); }

// 方式3:直接用System.out.println
System.out.println(getCount(s, "kk"));

算法優化建議

原代碼使用 substring 逐次截取,時間複雜度 O(n²)。改用 indexOf(str, fromIndex) 單次遍歷:

public static int countOccurrences(String text, String sub) {
    int count = 0, idx = 0;
    while ((idx = text.indexOf(sub, idx)) != -1) {
        count++;
        idx += sub.length();
    }
    return count;
}

時間複雜度 O(n),避免重複創建字符串對象。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved