Mengapa algoritma yang diberikan tidak terhenti?
Dalam algoritma yang disediakan, percubaan dibuat untuk mencari bilangan kejadian subrentetan dalam rentetan. Walau bagaimanapun, algoritma direka untuk meneruskan sehingga indeks terakhir subrentetan dalam rentetan menjadi -1. Syarat ini tidak akan dapat dipenuhi kerana indeks terakhir sentiasa dikemas kini dengan menambah panjang subrentetan padanya. Akibatnya, algoritma akan terus mencari subrentetan selama-lamanya, tidak pernah ditamatkan.
Menggunakan Apache Commons Lang untuk Pengiraan Subrentetan
Pendekatan alternatif untuk mengira kejadian subrentetan ialah untuk menggunakan kaedah StringUtils.countMatches daripada Apache Commons Lang. Kaedah ini mengambil rentetan dan subrentetan sebagai argumen dan mengembalikan bilangan kali subrentetan muncul dalam rentetan. Menggunakan kaedah ini, masalah asal boleh diselesaikan dengan kod berikut:
String str = "helloslkhellodjladfjhello"; String findStr = "hello"; System.out.println(StringUtils.countMatches(str, findStr));
Kod ini mengeluarkan:
3
yang mengira kejadian subrentetan "hello" dengan betul dalam rentetan "helloslkhellodjladfjhello".
Atas ialah kandungan terperinci Mengapa Algoritma Pengiraan Substring Saya Tidak Terhenti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!