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

Python을 사용하여 문자열에서 다른 정수의 수를 찾는 프로그램

<시간/>

소문자 영숫자 문자열 s가 있다고 가정합니다. 모든 숫자가 아닌 문자를 공백으로 교체하기 위해 면도했지만 이제 최소한 하나의 공백으로 구분된 일부 정수가 남습니다. s에 대한 교체 작업을 수행한 후 서로 다른 정수의 수를 찾아야 합니다. 여기서 두 숫자는 선행 0이 없는 소수 표현이 다른 경우 다른 것으로 간주됩니다.

따라서 입력이 s ="ab12fg012th5er67"과 같으면 출력은 3이 됩니다. 왜냐하면 숫자 ["12", "012", "5", "67"]가 이제 "12" 및 "012"이기 때문입니다. 문자열은 다르지만 정수와 같습니다. 따라서 세 개의 고유한 숫자가 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • nums :=새 목록

  • k :=빈 문자열

  • 범위 0에서 s까지의 i에 대해

    • s[i]의 ASCII> 47 및 s[i]의 ASCII <58인 경우

      • k :=k s[i]

        연결
    • 그렇지 않으면

      • k가 빈 문자열이 아니면

        • 숫자 끝에 k의 정수 형식 삽입

        • k :=빈 문자열

  • k가 빈 문자열이 아니면

    • 숫자 끝에 k의 정수 형식 삽입

  • 숫자로 고유한 요소의 개수를 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

def solve(s):
   nums = []
   k = ""
   for i in range(len(s)):
      if ord(s[i]) > 47 and ord(s[i]) < 58:
         k += s[i]
      else:
         if(k != ""):
            nums.append(int(k))
            k = ""
   if(k != ""):
      nums.append(int(k))
   return len(set(nums))
s = "ab12fg012th5er67"
print(solve(s))

입력

"ab12fg012th5er67"

출력

3