유효한지 여부를 확인해야 하는 우편 번호가 있다고 가정합니다. 유효한 우편 번호에는 다음 기준이 있습니다.
-
100000에서 999999 사이의 숫자여야 합니다(둘 다 포함).
-
교대로 반복되는 숫자 쌍을 두 개 이상 포함할 수 없습니다.
따라서 입력이 s ="700035"와 같으면 100000 ~ 999999 범위에 있고 연속 숫자도 없으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=s의 크기
- nb :=0
- 좋아요 :=맞습니다
- 0 ~ n - 1 범위의 i에 대해
- ok :=ok이고 s[i]는 숫자이면
- 0에서 n-3 사이의 i에 대해 다음을 수행합니다.
- nb :=nb + (s[i]가 s[i+2]와 같으면 1, 그렇지 않으면 0)
- return(ok가 true이고 n이 6과 같고 s[0]이 '0'과 같지 않고 nb <2인 경우 true), 그렇지 않으면 false를 반환합니다.
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(s):n =len(s) nb =0 ok =범위(n)의 i에 대해 True:ok =ok 및 범위(n-2)의 i에 대한 s[i].isdigit() :nb +=s[i] ==s[i+2] ok 및 n ==6 및 s[0] !='0' 및 nb <2s ="700035"print(solve(s))사전>입력
"700035"출력
사실