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

문자열을 확인하는 프로그램에는 Python에서 연속 내림차순 문자열이 포함되어 있는지 여부

<시간/>

일부 숫자가 포함된 문자열 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