Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số chuỗi con riêng biệt trong một chuỗi trong C ++

Theo đề bài ta được xâu str, ta phải đếm tất cả các xâu con trong xâu đã cho. Chuỗi con là một chuỗi là một phần của chuỗi đã tồn tại có kích thước có thể nhỏ hơn hoặc bằng chuỗi hiện có.

Hãy hiểu vấn đề và giải pháp của nó với sự trợ giúp của các ví dụ.

Đầu vào - str ="wxyz";

Đầu ra - số chuỗi con phân biệt là:10

Giải thích - Các chuỗi con riêng biệt được tính là -

wxyz, wxy, wx, w, xyz, xy, x, yz, y, z so their count is 10

Đầu vào - str ="zzzz"

Đầu ra - số chuỗi con phân biệt là:4

Giải thích - Các chuỗi con riêng biệt được tính là -

zzzz, zzz, zz, z

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Lấy một chuỗi str làm đầu vào.

  • Khai báo một "bộ bí ẩn" chưa được sắp xếp thứ tự trống.

  • Lặp lại tôi từ 0, di chuyển 1 bước cho đến khi tôi nhỏ hơn kích thước của chuỗi.

    • Khai báo một không gian chuỗi mới "" (trống).

    • Vòng lặp j bắt đầu từ lúc tôi di chuyển 1 bước cho đến khi j nhỏ hơn kích thước của chuỗi.

    • Nối giá trị của khoảng trắng trên mỗi bước với str [j]

    • Chèn dấu cách trong tập thần bí.

  • In kích thước của str dưới dạng một câu trả lời.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

count of distinct substring is: 4