2264-字符串中最大的 3 位相同数字
给你一个字符串 num
,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 :
- 该整数是
num
的一个长度为3
的 子字符串 。 - 该整数由唯一一个数字重复
3
次组成。
以字符串形式返回 最大的优质整数 。如果不存在满足要求的整数,则返回一个空字符串 ""
。
注意:
- 子字符串 是字符串中的一个连续字符序列。
num
或优质整数中可能存在 前导零 。
示例 1:
**输入:** num = "6 _ **777**_ 133339"
**输出:** "777"
**解释:** num 中存在两个优质整数:"777" 和 "333" 。
"777" 是最大的那个,所以返回 "777" 。
示例 2:
**输入:** num = "23 _ **000**_ 19"
**输出:** "000"
**解释:** "000" 是唯一一个优质整数。
示例 3:
**输入:** num = "42352338"
**输出:** ""
**解释:** 不存在长度为 3 且仅由一个唯一数字组成的整数。因此,不存在优质整数。
提示:
3 <= num.length <= 1000
num
仅由数字(0
-9
)组成
方法一:枚举
思路与算法
为了找到最大的优质整数,我们可以枚举字符串 num 中所有长度为 3 的子串,并记录符合要求且对应数值最大的子串。
具体地,我们用初值为空的字符串 res 来维护数值最大的符合要求子串,同时从左至右遍历长度为 3 子串的起始下标 i,每遍历到一个新的下标 i,我们判断以子串 num}[i..i + 2] 是否由相同的字符构成:如果是则该子串符合要求,我们将 res 更新为 res 和该子串的较大值(此处字符串字典序的大小关系与对应整数的大小关系一致);如果不是则不进行任何操作。
最终,如果存在符合要求的子串,则 res 即为对应数值最大的子串;如果不存在,则 res 为空字符串。因此我们返回 res 作为答案。
代码
1 | class Solution { |
1 | class Solution: |
复杂度分析
时间复杂度:O(n),其中 n 为 num 的长度。即为枚举所有长度为 3 子串的时间复杂度。
空间复杂度:O(1)。
Comments