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

Tìm chuỗi con ký tự và chữ số liên tiếp dài nhất trong Python

Một chuỗi đã cho có thể là hỗn hợp của các chữ số và chữ cái. Trong bài viết này, chúng tôi bắt buộc phải tìm chuỗi con lớn nhất có các chữ cái và chữ số cùng nhau.

với mô-đun lại

Mô-đun biểu thức chính quy có thể được sử dụng để tìm tất cả các chuỗi con liên tục có chữ số hoặc chữ cái. Sau đó, chúng tôi áp dụng hàm max để chỉ chọn những chuỗi con liên tục gồm các chữ cái và chữ số có độ dài tối đa trong số tất cả các chuỗi con được tìm thấy. Hàm findall cũng được sử dụng để xác định và lấy các chuỗi con cần thiết.

Ví dụ

import re

def longSubstring(str):
   letter = max(re.findall(r'\D+', str), key=len)
   digit = max(re.findall(r'\d+', str), key=len)

   return letter, digit

str = 'Hello 459 Congratulations! 234'
print(longSubstring(str))

Đầu ra

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

(' Congratulations! ', '459')

Với len () và Vòng lặp Trong khi

Đây là một cách tiếp cận thẳng nhưng chậm, trong đó chúng tôi thiết kế các vòng lặp while để kiểm tra độ dài của các chữ số và chữ cái có mặt dưới dạng chuỗi con trong chuỗi đã cho. Sau đó, chúng tôi so sánh độ dài của chúng và chỉ chọn các chuỗi con có độ dài tối đa.

Ví dụ

def longSubstring(s):
   max_letterSeq = ''
   max_digitSeq = ''
   i = 0
   while (i < len(s)):

      current_letterSeq = ''
      current_digitSeq = ''

      # Letters
      while (i < len(s) and s[i].isalpha()):
         current_letterSeq += s[i]
         i += 1

      # Digits
      while (i < len(s) and s[i].isdigit()):
         current_digitSeq += s[i]
         i += 1

      # Check if not digit or alphabet
      if (i < len(s) and not (s[i].isdigit())
            and not (s[i].isalpha())):
         i += 1

      if (len(current_letterSeq) > len(max_letterSeq)):
         max_letterSeq = current_letterSeq

      if (len(current_digitSeq) > len(max_digitSeq)):
         max_digitSeq = current_digitSeq

   return max_letterSeq, max_digitSeq

str = 'Hello 459 Congratulations! 234'
print(longSubstring(str))

Đầu ra

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

('Congratulations', '459')