이 도전에서 당신은 입력으로 알파벳 문자열이 제공됩니다. 우리는 주어진 입력의 "안티 문자열"을 모든 문자의 대소 문자가 반전 된 문자열로 정의 할 것입니다. 예를 들어
AaBbbUy -> aAbBBuY
문자열을 입력으로 사용하고 안티 스트링도 연속 서브 스트링 인 가장 긴 연속 서브 스트링을 검색하는 프로그램을 작성해야합니다. 두 개의 하위 문자열은 겹치지 않아야합니다.
예를 들어 문자열을 받았다면
fAbbAcGfaBBagF
굵게 표시된 부분은 가장 긴 문자열 안티 스트링 쌍입니다.
프로그램은 일단 쌍을 찾으면 각각 단일 문자로 축소해야합니다. 각 하위 문자열의 첫 문자를 제외한 모든 문자를 제거하여이 작업을 수행해야합니다. 예를 들어 위의 문자열
fAbbAcGfaBBagF
될 것이다
fAcGfagF
그런 다음 프로그램은 가장 긴 문자열 안티 스트링 쌍이 단일 문자 이하가 될 때까지 프로세스를 반복해야합니다.
예를 들어 축소 후 새로운 가장 긴 쌍을 동일한 문자열로 작업하는 것은
fAcGfagF
그래서 우리는 다시 문자열을 접습니다
fAcGag
이제 문자열을 더 이상 접을 수 없으므로 출력해야합니다.
후보 쌍 (예를 사이에 넥타이의 경우 AvaVA
) 당신도 감소 할 (수 AaA
또는 AvV
아니지만 Aa
).
이것은 코드 골프 이므로 바이트 수가 적을수록 답이 바이트로 표시됩니다.
테스트 사례
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
동기 부여
이 문제는 임의적으로 보일 수 있지만 실제로는 기본 다각형을 처리하기 위해 코드를 작성하는 동안 발생하는 문제입니다. 이 프로세스는 기본 다각형을 더 작은 n- 곤 으로 줄이는 데 사용할 수 있습니다 . 내가 그것을 시도한 후 나는 그것이 좋은 작은 골프를 만들 것이라고 생각했다.
aaaAAAaaa -> aAaaa
?