人生如逆旅,我亦是行人。————苏轼《临江仙·送钱穆父》
一、题:
给你一个字符串 num ,表示一个大整数。如果一个整数满足下述所有条件,则认为该整数是一个 优质整数 :
- 该整数是 num 的一个长度为 3 的 子字符串 。
- 该整数由唯一一个数字重复 3 次组成。
以字符串形式返回 最大的优质整数 。如果不存在满足要求的整数,则返回一个空字符串 "" 。
注意:
- 子字符串 是字符串中的一个连续字符序列。
- num 或优质整数中可能存在 前导零 。
输入:num = "6777133339" 输出:"777" 解释:num 中存在两个优质整数:"777" 和 "333" 。 "777" 是最大的那个,所以返回 "777" 。示例2:
输入:num = "2300019" 输出:"000" 解释:"000" 是唯一一个优质整数。示例3:
输入:num = "42352338" 输出:"" 解释:不存在长度为 3 且仅由一个唯一数字组成的整数。因此,不存在优质整数。提示:
- 3 <= num.length <= 1000
- num 仅由数字(0 - 9)组成
二、分析
遍历数组,找到满足条件的答案。
- 首先得出数组的长度;
- 如果其长度小于 3,则说明无优质整数,返回空字符串
- 再定义一个字符型变量
- 遍历整个数组,后两位无需遍历,
- 出现连续三个相等的数字,则记录它的大小并与之前的比较大小判断谁更大
- 如果最后 cur 仍为初始值,则说明数组没有连续重复三次的数字,则返回空字符串
- 不为初始值,则返回 3 个由字符 cur 组成的字符串,也就是我们需要求的优质整数
三、代码编写(C++):
class Solution {
public:
string largestGoodInteger(string num) {
int n = int(num.size()); //首先得出数组的长度
if(n < 3) return ""; //如果其长度小于3,则说明无优质整数,返回空字符串
char cur = ' '; //定义一个字符型变量
for(int i=0; i

