2264. Largest 3-Same-Digit Number in String

Easy
You are given a string num representing a large integer. An integer is good if it meets the following conditions:
  • It is a substring of num with length 3.
  • It consists of only one unique digit.
Return the maximum good integer as a string or an empty string "" if no such integer exists.
Note:
  • A substring is a contiguous sequence of characters within a string.
  • There may be leading zeroes in num or a good integer.
Example 1:
Input: num = "6777133339"
Output:
"777"
Explanation:
There are two distinct good integers: "777" and "333".
"777" is the largest, so we return "777".
Example 2:
Input: num = "2300019"
Output:
"000"
Explanation:
"000" is the only good integer.
Example 3:
Input: num = "42352338"
Output:
""
Explanation:
No substring of length 3 consists of only one unique digit. Therefore, there are no good integers.
Constraints:
  • 3 <= num.length <= 1000
  • num only consists of digits.

解題

func largestGoodInteger(num string) string {
ans := ""
for i:=0; i<= len(num)-3; i++ {
if num[i]==num[i+1] && num[i]==num[i+2] {
if len(ans)==0 {
ans = num[i:i+3]
} else {
if num[i] > ans[0] {
ans = num[i:i+3]
}
}
}
}
return ans
}
討論區看到的解法,很優雅,值得學習。
func largestGoodInteger(num string) string {
max := byte('0'-1)
for i := 1; i < len(num)-1; i++ {
if num[i]==num[i+1] && num[i]==num[i-1] && num[i] > max{
max = num[i]
}
}
if max == byte('0'-1) {
return ""
}
res := []byte{max, max, max}
return string(res)
}