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

Python에서 연속적으로 반복되는 문자를 피하기 위해 모든 질문 기호를 바꾸는 프로그램

<시간/>

문자와 '?'만 포함하는 소문자 문자열 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