Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 문자열의 양쪽 절반에 적어도 하나의 다른 문자가 있는지 확인하십시오.

<시간/>

소문자 문자열이 있다고 가정합니다. 우리는 문자열을 중간에서 분할할 수 있는지 확인해야 합니다. 그러면 두 쪽 사이에 최소한 한 문자 차이가 있는 두 개의 반쪽이 제공됩니다. 다른 문자 또는 각 문자의 빈도가 다를 수 있습니다. 문자열이 홀수 길이의 문자열이면 중간 요소를 무시하고 나머지 요소를 확인하십시오.

따라서 입력이 s ="helloohekk"와 같으면 출력은 "helloohekk"로 True이므로 왼쪽 부분은 "hello" 오른쪽 부분은 "ohekk" 왼쪽과 오른쪽이 다릅니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • left_freq :=빈 지도
  • right_freq :=빈 지도
  • n :=s의 크기
  • 0에서 (n/2) - 1의 몫 범위에 있는 i에 대해
    • left_freq[s[i]] :=left_freq[s[i]] + 1
  • (n/2) ~ n - 1의 범위 몫에 있는 i에 대해
    • right_freq[s[i]] :=right_freq[s[i]] + 1
  • s의 각 문자에 대해 다음을 수행합니다.
    • right_freq[char]가 left_freq[char]와 같지 않으면
      • 참 반환
  • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

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))

입력

"helloohekk"

출력

True