6056. 字符串中最大的 3 位相同数字

6056. 字符串中最大的 3 位相同数字

leetcode 6056. 字符串中最大的 3 位相同数字


题目:6056. 字符串中最大的 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)组成

方法:模拟

思路:遍历字符串num,找到最大的优质整数。

运行数据:执行用时:3 ms,内存消耗:41.5 MB

复杂度分析:

  • 时间复杂度:O(n),n为num字符串长度。
  • 空间复杂度:O(1)。
1
2
3
4
5
6
7
8
9
10
11
12
13
// LeetCode指定调用方法
public String largestGoodInteger(String num) {

int max = -1;
for (int i = 2; i < num.length(); i++) {
if (num.charAt(i) == num.charAt(i - 1) && num.charAt(i) == num.charAt(i - 2)) {
String sub = num.substring(i - 2, i + 1);
max = Math.max(max, Integer.valueOf(sub));
}
}

return max == 0 ? "000" : (max == -1 ? "" : max + "");
}

学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。

才疏学浅,若有错误或不当之处,可批评指正,还请见谅!


 
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×