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

Kiểm tra xem chuỗi đã cho có thể được hình thành bằng cách nối các phần tử chuỗi của danh sách bằng Python hay không

Đôi khi chúng ta cần kiểm tra xem một chuỗi bắt buộc có thể được hình thành từ nhiều chuỗi có trong danh sách hay không. Cũng không quan trọng thứ tự các chuỗi hiện diện trong danh sách phải được nối với nhau để có được chuỗi bắt buộc.

Với hoán vị

Từ itertools, chúng ta có thể sử dụng hàm hoán vị sẽ cung cấp cho chúng ta các kết hợp có thể có của các chuỗi trong danh sách theo thứ tự khác nhau. Ngay sau khi một tổ hợp nhất định khớp với chuỗi bắt buộc, chúng tôi kết luận rằng chuỗi có thể được tạo thành.

Ví dụ

from itertools import permutations

chk_str = 'balloon'
Alist = ['fly','on', 'o', 'hot', 'ball', 'air']

def findstring(strchk, biglist):
   for i in range(2, len(biglist) + 1):
      for perm in permutations(biglist, i):
         if ''.join(perm) == strchk:
         return True
   return False

# Using the function
if(findstring(chk_str,Alist)):
   print("String can be formed.")
else:
   print("String can not be formed.")

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

String can be formed.

Với Cụm từ Thông dụng

Mô-đun re cung cấp chức năng biên dịch sẽ tạo các chuỗi có thể bằng cách chỉ định mẫu biểu thức chính quy. Sau đó, nó sẽ được so sánh với chuỗi cần kiểm tra. Nếu kết quả không phải là không thì chúng ta có thể kết luận rằng chuỗi có thể được hình thành.

Ví dụ

import re

chk_str = 'balloon'
Alist = ['fly','on', 'o', 'hot', 'ball', 'air']

def findstring(strchk, biglist):
   r = re.compile("(?:" + "|".join(biglist) + ")*$")
   if r.match(strchk) != None:
      return True
   return False

# Using the function
if(findstring(chk_str,Alist)):
   print("String can be formed.")
else:
   print("String can not be formed.")

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

String can be formed.