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

Kiểm tra xem cả hai nửa của chuỗi có ít nhất một ký tự khác nhau trong Python hay không

Giả sử chúng ta có một chuỗi chữ thường; chúng ta phải kiểm tra xem chúng ta có thể tách chuỗi từ giữa hay không, điều này sẽ tạo ra hai nửa có sự khác biệt ít nhất một ký tự giữa hai bên. Nó có thể chứa các ký tự khác nhau hoặc tần suất xuất hiện khác nhau của mỗi ký tự. Nếu chuỗi là chuỗi có độ dài lẻ, hãy bỏ qua phần tử ở giữa và kiểm tra các phần tử còn lại.

Vì vậy, nếu đầu vào là s =​​"helloohekk", thì đầu ra sẽ là True là "helloohekk" vì vậy phần bên trái là "xin chào" phần bên phải là "ohekk" bên trái và bên phải là khác nhau.

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

  • left_freq:=một bản đồ trống
  • right_freq:=một bản đồ trống
  • n:=kích thước của s
  • đối với tôi trong phạm vi từ 0 đến thương của (n / 2) - 1, thực hiện
    • left_freq [s [i]]:=left_freq [s [i]] + 1
  • đối với tôi trong phạm vi thương số từ (n / 2) đến n - 1, thực hiện
    • right_freq [s [i]]:=right_freq [s [i]] + 1
  • đối với mỗi ký tự trong s, thực hiện
    • nếu right_freq [char] không giống left_freq [char], thì
      • trả về True
  • trả về Sai

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

Ví dụ

from collections import defaultdict
def solve(s):
   left_freq = defaultdict(int)
   right_freq = defaultdict(int)
   n = len(s)
   for i in range(n//2):
      left_freq[s[i]] += 1
   for i in range(n//2, n):
      right_freq[s[i]] += 1
   for char in s:
      if right_freq[char] != left_freq[char]:
         return True
   return False
s = "helloohekk"
print(solve(s))

Đầu vào

"helloohekk"

Đầu ra

True