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

Chương trình tìm ra số lượng các chuỗi con khác nhau trong một chuỗi nhất định trong python

Giả sử, chúng ta được cung cấp một chuỗi con ký hiệu là 's'. Chúng ta phải tìm ra các chuỗi con duy nhất và trả về số lượng các chuỗi con này dưới dạng đầu ra.

Vì vậy, nếu đầu vào là s =​​'prrstvt', thì đầu ra sẽ là 26.

Các chuỗi con riêng biệt sẽ là -

'pr', 'rrs', 'st', 'rr', 'tv', 'rstv', 'stvt', 'prrstv', 'prrstvt', 'rrstvt', 's', 'prrst', 'stv ',' rrstv ',' rst ',' v ',' tvt ',' rstvt ',' r ',' rs ',' vt ',' t ',' prr ',' p ',' rrst ', và 'prrs'.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đã thăm:=một bản đồ mới
  • đối với mỗi chỉ mục ind và giá trị cho vào s, thực hiện
    • temp:=một tập hợp mới
    • nếu ind-1 hiện diện trong lượt truy cập, thì
      • đối với mỗi has_let trong đã truy cập [ind-1], hãy thực hiện
        • thêm (has_let + let) vào danh sách tạm thời
    • thêm (let) vào danh sách tạm thời
    • đã thăm [ind]:=temp
  • res:=một tập hợp mới
  • đối với mỗi nhóm đã truy cập, hãy thực hiện
    • thêm (đã truy cập [bộ]) vào res
  • trả về kích thước res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(s):
   visited = dict()
   for ind, let in enumerate(s):
      temp = set()
      if ind-1 in visited:
         for has_let in visited[ind-1]:
            temp.add(has_let+let)
      temp.add(let)
      visited[ind] = temp
   res = set()
   for sets in visited:
      res.update(visited[sets])
   return len(res)

print(solve('prrstvt'))

Đầu vào

'prrstvt'

Đầu ra

26