Hướng dẫn longest substring with repeating characters python - chuỗi con dài nhất với các ký tự lặp lại python

Peter de Rivaz dường như đã xác định được vấn đề với mã của bạn, tuy nhiên, nếu bạn quan tâm đến một cách khác để giải quyết vấn đề này, hãy xem xét bằng cách sử dụng biểu thức thông thường.

import sys
import re

next(sys.stdin)             # length not needed in Python    
s = next(sys.stdin)

repeats = r'(.)\1+'
for match in re.finditer(repeats, s):
    print(match.group())

Mẫu (.)\1+ sẽ tìm thấy tất cả các chuỗi con của các chữ số lặp đi lặp lại. Đầu ra cho đầu vào

10

sẽ là:

44
555
88

Nếu re.finditer() thấy rằng không có chữ số lặp lại thì chuỗi trống hoặc nó bao gồm một chuỗi các chữ số không lặp lại tăng. Trường hợp đầu tiên được loại trừ vì n phải lớn hơn 0. Đối với trường hợp thứ hai, đầu vào đã được sắp xếp theo thứ tự bảng chữ cái, vì vậy chỉ cần xuất ra độ dài và mỗi chữ số.

Đặt nó lại với nhau cho mã này:

import sys
import re

next(sys.stdin)                 # length not needed in Python
s = next(sys.stdin).strip()

repeats = r'(.)\1+'
passwords = sorted((m.group() for m in re.finditer(repeats, s)),
                    key=len, reverse=True)

passwords = [s for s in passwords if len(s) == len(passwords[0])]

if len(passwords) == 0:
    passwords = list(s)

print(len(passwords))
print(*passwords, sep='\n')

Lưu ý rằng các chuỗi con phù hợp được trích xuất từ ​​đối tượng match và sau đó được sắp xếp theo độ dài giảm dần. Mã này dựa trên thực tế là các chữ số trong đầu vào không được giảm nên không cần phải có loại chữ cái thứ hai của mật khẩu ứng cử viên.


Giả sử chúng ta có chuỗi chữ thường S, chúng ta phải tìm độ dài của chuỗi con dài nhất xảy ra ít nhất hai lần trong s. Nếu chúng ta không thể tìm thấy chuỗi như vậy, hãy trả về 0.

Vì vậy, nếu đầu vào giống như s = "AbdGoalputabDtypeAbd", thì đầu ra sẽ là 3, bởi vì chuỗi con dài nhất xảy ra nhiều lần là "ABD".

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

  • Xác định một hàm lcs (). Điều này sẽ mất S1, S2
  • n: = tối thiểu kích thước của S1 và kích thước của S2
  • Đối với tôi trong phạm vi 0 đến n - 1, làm
    • Nếu s1 [i] không giống như s2 [i], thì
      • Trả về Subring của S1 [từ chỉ mục 0 đến I-1]
  • Trả về Subring của S1 [từ chỉ mục 0 đến n - 1]
  • Từ phương pháp chính, hãy thực hiện những điều sau -
  • Hậu tố: = một danh sách mới
  • N: = Kích thước của s
  • max_len: = 0
  • Đối với tôi trong phạm vi 0 đến n - 1, làm
    • Nếu s1 [i] không giống như s2 [i], thì
  • Trả về Subring của S1 [từ chỉ mục 0 đến I-1]
  • Trả về Subring của S1 [từ chỉ mục 0 đến n - 1]
    • Từ phương pháp chính, hãy thực hiện những điều sau -
    • Hậu tố: = một danh sách mới
      • N: = Kích thước của s
  • max_len: = 0

Chèn (chuỗi con của S [từ chỉ mục I đến n - 1]) ở cuối hậu tố

Sắp xếp các hậu tố danh sách

def lcs(s1, s2):
   n = min(len(s1), len(s2))

   for i in range(n):
      if s1[i] != s2[i]:
         return s1[:i]
   return s1[:n]

def solve(s):
   suffixes = []
   n = len(s)
   max_len = 0

   for i in range(n):
      suffixes.append(s[i:n])

   suffixes.sort()

   for a, b in zip(suffixes, suffixes[1:]):
      rtr = lcs(a, b)

      if len(rtr) > max_len:
         max_len = len(rtr)

   return max_len

s = "abdgoalputabdtypeabd"
print(solve(s))

Đối với mỗi mục A từ hậu tố và B từ phần phụ của hậu tố [từ chỉ mục 1 đến cuối], làm

"abdgoalputabdtypeabd"

RTR: = LCS (A, B)

3

Hướng dẫn longest substring with repeating characters python - chuỗi con dài nhất với các ký tự lặp lại python

Nếu kích thước của rtr> max_len, thì

  • MAX_LEN: = Kích thước của RTR
  • trả lại max_len
  • Thí dụ
  • Hãy cho chúng tôi xem việc thực hiện sau đây để hiểu rõ hơn -
  • Lặp lại chuỗi con dài nhất trong C ++
  • Chất nền dài nhất mà không lặp lại các ký tự trong Python
  • Chương trình tìm độ dài của chuỗi con palindromic dài nhất sau khi xoay một lần trong Python
  • Chương trình tìm độ dài của chuỗi con dài nhất với số nguyên âm trong Python
  • Chương trình tìm độ dài của chuỗi con dài nhất với 1S trong chuỗi nhị phân sau một lần 0-flip trong Python
  • Chương trình tìm độ dài của chuỗi con dài nhất có chứa K ký tự riêng biệt trong Python
  • Làm thế nào để tìm độ dài của chuỗi con dài nhất từ chuỗi đã cho mà không lặp lại các ký tự bằng C#?
  • Chương trình tìm thấy cơ chất tuyệt vời dài nhất trong Python
  • Chương trình tìm độ dài của độ dài đường dẫn ma trận dài nhất trong Python
  • Chương trình tìm độ dài của chuỗi con dài nhất có hai yếu tố riêng biệt trong Python
  • Chương trình tìm độ dài của chuỗi con dài nhất với số lượng ký tự ít nhất là k trong Python
  • Tìm độ dài của chuỗi dài nhất của một chuỗi là chuỗi con của một chuỗi khác trong C ++