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

更新於: 2020-08-14

571 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告