Problem Link

Description


You are given a string word that consists of digits and lowercase English letters.

You will replace every non-digit character with a space. For example, "a123bc34d8ef34" will become " 123Β  34 8Β  34". Notice that you are left with some integers that are separated by at least one space: "123", "34", "8", and "34".

Return the number of different integers after performing the replacement operations on word.

Two integers are considered different if their decimal representations without any leading zeros are different.

Β 

Example 1:

Input: word = "a123bc34d8ef34"
Output: 3
Explanation: The three different integers are "123", "34", and "8". Notice that "34" is only counted once.

Example 2:

Input: word = "leet1234code234"
Output: 2

Example 3:

Input: word = "a1b01c001"
Output: 1
Explanation: The three integers "1", "01", and "001" all represent the same integer because
the leading zeros are ignored when comparing their decimal values.

Β 

Constraints:

  • 1 <= word.length <= 1000
  • word consists of digits and lowercase English letters.

Solution


Python3

class Solution:
    def numDifferentIntegers(self, word: str) -> int:
        s = set()
        
        tmp = ""
        for w in word+"a":
            if w in "12345667890":
                tmp += w
            else:
                if tmp != "":
                    while tmp and tmp[0] == "0":
                        tmp = tmp[1:]
                    s.add(tmp)
                tmp = ""
 
        return len(s)