C++ 中字串的不同子字串計數
根據問題,我們得到一個字串 str,我們必須計算給定字串中的所有子字串。子字串是已經存在字串的一部分,其大小可能小於或等於現有字串。
讓我們藉助示例瞭解問題及其解決方案。
輸入 − str = "wxyz";
輸出 − 不同子字串的數量為:10
說明 − 計算的不同子字串為 −
wxyz, wxy, wx, w, xyz, xy, x, yz, y, z so their count is 10
輸入 − str = "zzzz"
輸出 − 不同子字串的數量為:4
說明 − 計算的不同子字串為 −
zzzz, zzz, zz, z
下面程式中使用的思路如下
將字串 str 作為輸入。
宣告一個空的無序集合 "myset"。
迴圈 i 從 0 開始,每次移動 1 步,直到 i 小於字串的大小。
宣告一個新的字串空間 ""(空)。
迴圈 j 從 i 開始,每次移動 1 步,直到 j 小於字串的大小。
在每一步中,將空間的值與 str[j] 連線起來
將空間插入 myset。
列印 str 的大小作為答案。
示例
#include<iostream> #include<unordered_set> using namespace std; int main(){ string str = "aaaa"; unordered_set<string> myset; int i, j; for (i = 0; i < str.size(); ++i){ string space = ""; for (j = i; j < str.size(); ++j){ space = space + str[j]; myset.insert(space); } } cout <<"count of distinct substring is: " <<str.size(); return 0; }
輸出
如果我們執行以上程式碼,我們將得到以下輸出 -
count of distinct substring is: 4
廣告