문자와 '?'만 포함하는 소문자 문자열 s가 있다고 가정합니다. 문자, 우리는 모든 '?' 마지막 문자열에 연속되는 반복 문자가 없도록 문자를 소문자로 변환합니다. 솔루션이 두 개 이상인 경우 그 중 하나를 반환하십시오.
따라서 입력이 s ="hel??"과 같으면 출력은 helab이 됩니다. se 첫 번째 물음표는 'l'을 제외한 모든 것이 될 수 있고 첫 번째 물음표가 주어지면 두 번째 물음표는 'a'를 제외한 모든 것이 될 수 있습니다. .
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
s의 크기가 1과 같으면
-
s가 "?"와 같으면
-
"a"를 반환
-
-
반환 s
-
-
s :=s에 있는 문자 목록
-
범위 0에서 s - 1까지의 i에 대해 수행
-
s[i]가 "?"와 같으면
-
i가 0과 같고 s[i+1]이 "?"와 같으면
-
s[i] :="아"
-
-
그렇지 않으면 i가 0과 같고 s[i+1]이 "a"와 같을 때
-
s[i] :="b"
-
-
그렇지 않으면 i가 0과 같을 때
-
s[i] :="아"
-
-
그렇지 않으면 i가 (s의 크기)-1과 같고 s[i-1]이 "a"와 같으면
-
s[i] :="b"
-
-
그렇지 않으면 i가 (s의 크기)-1과 같을 때
-
s[i] :="아"
-
-
그렇지 않으면 s[i-1]이 "a"와 같고 s[i+1]이 "?"와 같을 때
-
s[i] :="b"
-
-
그렇지 않으면 s[i+1]이 "?"와 같을 때
-
s[i] :="아"
-
-
그렇지 않으면 (s[i-1]이 "a"와 동일하고 s[i+1]이 "b"와 동일) 또는 (s[i-1]이 "b"와 동일하고 s[i+1]) "a"와 동일),
-
s[i] :="c"
-
-
그렇지 않으면 s[i-1] 또는 s[i+1]이 "a"인 경우
-
s[i] :="b"
-
-
그렇지 않으면
-
s[i] :="아"
-
-
-
-
문자열에 문자를 결합한 후 s 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(s): if len(s) == 1 : if s == "?": return "a" return s s = list(s) for i in range(len(s)): if s[i] == "?": if i == 0 and s[i+1] == "?": s[i] = "a" elif i == 0 and s[i+1] == "a": s[i] = "b" elif i == 0: s[i] = "a" elif i == len(s)-1 and s[i-1] == "a": s[i] = "b" elif i == len(s)-1: s[i] = "a" elif s[i-1] == "a" and s[i+1] == "?": s[i] = "b" elif s[i+1] == "?": s[i] = "a" elif (s[i-1] == "a" and s[i+1] == "b") or (s[i-1] == "b" and s[i+1] == "a"): s[i] = "c" elif "a" in (s[i-1],s[i+1]): s[i] = "b" else: s[i] = "a" return "".join(s) s = "hel??" print(solve(s))
입력
"hel??"
출력
helab