2264. 字符串中最大的 3 位相同数字
题目描述
给你一个字符串 num
,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 :
- 该整数是
num
的一个长度为3
的 子字符串 。 - 该整数由唯一一个数字重复
3
次组成。
以字符串形式返回 最大的优质整数 。如果不存在满足要求的整数,则返回一个空字符串 ""
。
注意:
- 子字符串 是字符串中的一个连续字符序列。
num
或优质整数中可能存在 前导零 。
示例 1:
输入:num = "6777133339" 输出:"777" 解释:num 中存在两个优质整数:"777" 和 "333" 。 "777" 是最大的那个,所以返回 "777" 。
示例 2:
输入:num = "2300019" 输出:"000" 解释:"000" 是唯一一个优质整数。
示例 3:
输入:num = "42352338" 输出:"" 解释:不存在长度为 3 且仅由一个唯一数字组成的整数。因此,不存在优质整数。
提示:
3 <= num.length <= 1000
num
仅由数字(0
-9
)组成
解法
方法一:枚举
我们可以从大到小枚举每个数字 $i$,其中 $0 \le i \le 9$,然后判断连续的三个 $i$ 构成的字符串 $s$ 是否是 $num$ 的子串,若是,直接返回 $s$ 即可。
若枚举完所有的 $i$ 都没有找到满足条件的字符串,则返回空字符串。
时间复杂度 $O(10 \times n)$,其中 $n$ 是字符串 $num$ 的长度。空间复杂度 $O(1)$。
Python3
class Solution:
def largestGoodInteger(self, num: str) -> str:
for i in range(9, -1, -1):
if (s := str(i) * 3) in num:
return s
return ""
Java
class Solution {
public String largestGoodInteger(String num) {
for (int i = 9; i >= 0; i--) {
String s = String.valueOf(i).repeat(3);
if (num.contains(s)) {
return s;
}
}
return "";
}
}
C++
class Solution {
public:
string largestGoodInteger(string num) {
for (char i = '9'; i >= '0'; --i) {
string s(3, i);
if (num.find(s) != string::npos) {
return s;
}
}
return "";
}
};
Go
func largestGoodInteger(num string) string {
for c := '9'; c >= '0'; c-- {
if s := strings.Repeat(string(c), 3); strings.Contains(num, s) {
return s
}
}
return ""
}
TypeScript
function largestGoodInteger(num: string): string {
for (let i = 9; i >= 0; i--) {
const s = String(i).repeat(3);
if (num.includes(s)) {
return s;
}
}
return '';
}