일부 숫자가 포함된 문자열 s가 있다고 가정하고 연속적으로 내림차순 정수를 포함하는지 여부를 확인해야 합니다.
따라서 입력이 s ="99989796"과 같으면 이 문자열이 [99,98,97,96]
을 유지하므로 출력은 True가 됩니다.이 문제를 해결하기 위해 다음 단계를 따르겠습니다-
-
helper() 함수를 정의합니다. 이것은 pos가 필요합니다. prev_num
-
pos가 n과 같으면
-
참을 반환
-
-
num_digits :=prev_num의 자릿수
-
num_digits - 1에서 num_digits 범위의 i에 대해
-
s[인덱스 pos에서 pos+i-1로] 및 s[인덱스 pos에서 pos+i-1로]의 숫자 형식이 prev_num - 1과 동일한 경우
-
도우미(pos + i, prev_num - 1)인 경우
-
참을 반환
-
-
거짓을 반환
-
기본 방법에서 다음을 수행하십시오-
-
n :=s
의 크기 -
범위 1에서 n/2의 몫까지의 i에 대해 다음을 수행하십시오.
-
num :=s[인덱스 0에서 i-1까지]
의 숫자 형식 -
도우미(i, num)가 참이면
-
참을 반환
-
-
거짓을 반환
-
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, s): n = len(s) def helper(pos, prev_num): if pos == n: return True num_digits = len(str(prev_num)) for i in range(num_digits - 1, num_digits + 1): if s[pos:pos+i] and int(s[pos:pos+i]) == prev_num - 1: if helper(pos + i, prev_num - 1): return True return False for i in range(1, n//2 + 1): num = int(s[:i]) if helper(i, num): return True return False ob = Solution() s = "99989796" print(ob.solve(s))
입력
"99989796"
출력
True