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

파이썬에서 주어진 문자열 문자로 k 회문을 만들 수 있는지 여부를 확인하는 프로그램은 무엇입니까?

<시간/>

문자열 s와 다른 숫자 k가 있다고 가정하고 s의 모든 문자를 사용하여 kpalindrome을 만들 수 있는지 여부를 확인해야 합니다.

따라서 입력이 s ="amledavmel" k =2와 같으면 출력은 True가 됩니다. "level"과 "madam"을 만들 수 있기 때문입니다.

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

  • d :=각각의 고유한 문자와 빈도를 저장하는 맵

  • cnt :=0

  • d의 각 키에 대해 수행

    • d[key]가 홀수이면

      • cnt :=cnt + 1

    • cnt> k인 경우

      • 거짓을 반환

  • 참을 반환

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

from collections import Counter

class Solution:
   def solve(self, s, k):
      d = Counter(s)
         cnt = 0
         for key in d:
            if d[key] & 1:
               cnt += 1
            if cnt > k:
               return False
         return True

ob = Solution()
s = "amledavmel"
k = 2
print(ob.solve(s, k))

입력

"amledavmel",2

출력

True