Java中遞迴計數子字串出現次數
給定兩個字串str_1和str_2。目標是使用遞迴方法計算字串str2在字串str1中出現的次數。
遞迴函式是在其定義內部包含自身呼叫的函式。
如果str1是“I know that you know that i know”,str2是“know”
出現次數為 - 3
讓我們透過例子來理解。
例如
輸入
str1 = "TPisTPareTPamTP", str2 = "TP";
輸出
Count of occurrences of a substring recursively are: 4
解釋
The substring TP occurs 4 times in str1.
輸入
str1 = "HiHOwAReyouHiHi" str2 = "Hi"
輸出
Count of occurrences of a substring recursively are: 3
解釋
The substring Hi occurs 3 times in str1.
以下程式中使用的演算法如下:
在這種方法中,我們將使用Java中的contains()方法搜尋str2在str1中的出現情況。如果str2存在於str1中,則返回true。如果為true,則使用Java中的replaceFirst()方法將其第一個出現替換為“”來從str1中移除它,並將1新增到返回值以增加計數。
將兩個字串作為str1和str2。
遞迴方法subsrting_rec(String str, String sub)接受字串str及其子字串sub,並返回sub在str中出現的次數。
檢查str.contains(sub)是否為真。(str包含sub)
如果為真,則使用str.replaceFirst(sub,“”)將sub的第一個出現替換為空字串。
在對subsrting_rec(String str, String sub)的遞迴呼叫中執行此操作。
在所有遞迴結束時,所有返回值的總和就是計數。
列印結果。
例子
public class recursive{
public static void main(String args[]){
String str1 = "TPisTPareTPamTP", str2 = "TP";
System.out.println("Count of occurrences of a substring recursively are: "+subsrting_rec(str1, str2));
}
static int subsrting_rec(String str, String sub){
if (str.contains(sub)){
return 1 + subsrting_rec(str.replaceFirst(sub, ""), sub);
}
return 0;
}
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Count of occurrences of a substring recursively are: 4
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP