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

Tìm một chuỗi theo thứ tự từ vựng nằm giữa hai chuỗi đã cho trong Python

Giả sử chúng ta có hai chuỗi S và T, chúng ta phải kiểm tra xem một chuỗi có cùng độ dài có từ vựng lớn hơn S và nhỏ hơn T. Chúng ta phải trả về -1 nếu không có chuỗi như vậy. Chúng ta phải lưu ý rằng S =S1S2… Sn được gọi là từ vựng nhỏ hơn T =T1T2… Tn, với điều kiện tồn tại một i, sao cho S1 =T1, S2 =T2,… Si - 1 =Ti - 1, Si

Vì vậy, nếu đầu vào giống như S ="bbb" và T ="ddd", thì đầu ra sẽ là "bbc"

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

  • n:=kích thước của chuỗi
  • đối với tôi trong phạm vi n - 1 đến 0, giảm đi 1, thực hiện
    • nếu chuỗi [i] không giống với 'z', thì
      • k:=ASCII của (string [i])
      • string [i]:=ký tự từ ASCII (k + 1)
      • nối các ký tự trong chuỗi và trả về
    • string [i]:='a'

Ví dụ

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

def find_next(string):
   n = len(string)
   for i in range(n - 1, -1, -1):
      if string[i] != 'z':
         k = ord(string[i])
         string[i] = chr(k + 1)
         return ''.join(string)
      string[i] = 'a'
S = "bbb"
T = "ddd"
S = list(S)
res = find_next(S)
if res != T:
   print(res)
else:
   print(-1)

Đầu vào

"bbb", "ddd"

Đầu ra

bbc