Day02 leetcodeP2264字符串中最大的三位相同数字
本文最后更新于62 天前,其中的信息可能已经过时,如有错误请发送邮件到3091169959@qq.com

1.题目描述

给你一个字符串 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)组成

2.题目分析

其实这道题就是简单的通过暴力就可以解决的,常规解法如下:

class Solution {
    public String largestGoodInteger(String num) {
    	// :如果长度小于3,直接返回空字符串
    	if(num.length() < 3) return "";
    	char max ='\0';
    	for(int i = 0;i <=num.length()-3;i++) {
    		if(num.charAt(i) == num.charAt(i+1) && num.charAt(i+1)== num.charAt(i+2)) {
    			if(num.charAt(i) > max)
    				max = num.charAt(i);
    		}
    	}
        return max == '\0' ? "":new String(new char[] {max,max,max});
    }
}

稍微一开始先做个长度的判断进行优化,返回字符串时就构造一个字符串返回。

3.提交结果

今天的每日一题还算简单,非常适合我这种明天考试今天还刷题的人。

4.拓展思路

其实打表也是一个很好的思路,对于数字来说,只有0-9,所以可以直接通过判断当前字符串中是否包含从9-0的三连字符串

class Solution2 {
    public String largestGoodInteger(String num) {
        for (char c = '9'; c >= '0'; c--) {
            String triple = "" + c + c + c;
            if (num.contains(triple)) {
                return triple;
            }
        }
        return "";
    }
}

结果发现这个还不如之前的遍历,问题应该是出现在字典没有写死,进行优化,使用字典(数组)的方式来查找最大的优质整数应该性能会更好。

class Solution2 {
	public String largestGoodInteger(String num) {
    // 检查输入的有效性
    if (num == null || num.length() < 3) return "";
    // 定义整数字典,从大到小排列
    String[] e = {"999", "888", "777", "666", "555", "444", "333", "222", "111", "000"};
    // 遍历字典,找到第一个出现在 num 中的优质整数并返回
    for (String goodInt : e) {
        if (num.contains(goodInt)) {
            return goodInt;
        }
    }
    return "";
}
}

确实实现了100%的用时。

5.总结

最近一段时间有点忙,算法题刷的有点少了,每天都惴惴不安的,思来想去,还是每天抽空写个两题,有助于睡眠质量的提升,今天的题目虽然简单,但是通过对与程序的性能优化的过程,以空间换时间,对于在复杂项目中,多个这种小细节的提升可以极大提高整体的性能和抗压能力。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
//根据主题自动透明