SISS/HackerRank(C)
[Strings] Palindrome Index
3190024
2020. 9. 13. 18:39
문자열 s가 주어지는데, 한 글자만을 고쳐 s를 회문으로 만들 수 있으면 해당 인덱스를, s가 처음부터 회문이거나 한 글자만 고치는 것으로는 회문으로 만들수 없을 경우에는 -1을 반환한다.
aaa > 이미 회문이므로 -1
baaaa > 0번 인덱스만 고치면 되므로 0
abcdefghi > 한 글자만 고치는 것으로는 회문으로 만들 수 없으므로 -1
문자열의 왼쪽 끝과 오른쪽 끝부터 비교하며 검사한다. 처음에는 이 둘이 다를 때 left나 right를 움직여서 비교한 후 같으면 이동을 했으나 ababa....abbba(.... 부분은 회문이라고 가정한다면) 같은 경우에는 색칠한 b만 고치면 되는데 끝없이 고쳐야 하는 것으로 결론이 났다. 이를 해결하기 위해 양쪽의 연속된 두 문자를 비교하는 것으로 수정하였다.