길이가 짝수인 소문자 문자열 s가 있다고 가정합니다. 모든 i에 대해 다음 세 가지 조건 중 하나가 충족되도록 업데이트해야 하는 최소 문자 수를 찾아야 합니다. 여기서 0 ≤ i
따라서 입력이 s ="pppxxp"와 같으면 출력은 1이 됩니다. 왜냐하면 마지막 "p"를 "x"로 변경하면 s[i]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
from collections import Counter
from string import ascii_lowercase
def solve(s):
n = len(s)
left = Counter(s[: n >> 1])
right = Counter(s[n >> 1 :])
ans = n
for pivot in ascii_lowercase:
ans = min(ans, n - left[pivot] - right[pivot])
good = sum(left[c] for c in left if c <= pivot)
good += sum(right[c] for c in right if c > pivot)
ans = min(ans, n - good)
good = sum(left[c] for c in left if c > pivot)
good += sum(right[c] for c in right if c <= pivot)
ans = min(ans, n - good)
return ans
s = "pppxxp"
print(solve(s))
입력
"pppxxp"
출력
1