• LeetCode每日一题——1805. 字符串中不同整数的数目


    LeetCode每日一题系列

    题目:1805. 字符串中不同整数的数目
    难度:简单



    题目

    给你一个字符串 word ,该字符串由数字和小写英文字母组成。

    请你用空格替换每个不是数字的字符。例如,“a123bc34d8ef34” 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):“123”、“34”、“8” 和 “34” 。

    返回对 word 完成替换后形成的 不同 整数的数目。

    只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。

    示例

    示例 1:

    输入:word = “a123bc34d8ef34”
    输出:3
    解释:不同的整数有 “123”、“34” 和 “8” 。注意,“34”
    只计数一次。

    示例 2:

    输入:word = “leet1234code234”
    输出:2

    示例 3:

    输入:word = “a1b01c001”
    输出:1
    解释:“1”、“01” 和 "001"视为同一个整数的十进制表示,因为在比较十进制值时会忽略前导零的存在。

    提示:

    1 <= word.length <= 1000
    word 由数字和小写英文字母组成

    思路

    1. 遍历一遍给定字符串,会遇到两种情况
      • 遇到字母,我们直接跳过,继续往后遍历
      • 遇到数字,我们记录下来从该数字开始往后遍历直到下一个字母为止的数字组合,将该组合转化为int类型加入集合中(转为数字是为了去除前导零的影响,加入集合中是为了自动去重)
    2. 最后返回集合的长度即可

    题解

    class Solution:
        def numDifferentIntegers(self, word: str) -> int:
            ans, index = set(), 0
            while index < len(word):
            	# 第二种情况
                if word[index] in '1234567890':
                    index_ = index + 1
                    while index_ < len(word) and word[index_] in '1234567890' :
                        index_ += 1
                    ans.add(int(word[index:index_]))
                    index = index_
                # 第一种情况
                else:
                    index += 1
            return len(ans)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    Unity的IUnityLinkerProcessor:深入解析与实用案例
    U81206:链式前向星模板题
    winsw 注册的java服务jps process information unavailable
    《学习的学问》长沙分享会
    python的基础知识
    山居生活,亦可升级
    Python基础专题 - 教你使用装饰器
    C# 图解教程 第5版 —— 第8章 类和继承
    2.1基本算法之枚举1812:完美立方
    jsp+sql毕业生招聘系统免费系统+论文
  • 原文地址:https://blog.csdn.net/m0_52000372/article/details/128199039