**比赛地址
第一题:**

给你一个表示某个正整数的字符串 number 和一个字符 digit 。
从 number 中 恰好 移除 一个 等于 digit 的字符后,找出并返回按 十进制 表示 最大 的结果字符串。 
生成的测试用例满足 digit 在 number 中出现至少一次。
示例 1:
输入:number = "123", digit = "3"
输出:"12"
解释:"123" 中只有一个 '3' ,在移除 '3' 之后,结果为 "12" 。
示例 2:
输入:number = "1231", digit = "1"
输出:"231"
解释:可以移除第一个 '1' 得到 "231" 或者移除第二个 '1' 得到 "123" 。
由于 231 > 123 ,返回 "231" 。
示例 3:
输入:number = "551", digit = "5"
输出:"51"
解释:可以从 "551" 中移除第一个或者第二个 '5' 。
两种方案的结果都是 "51" 。
提示:
2 <= number.length <= 100
number 由数字 '1' 到 '9' 组成
digit 是 '1' 到 '9' 中的一个数字
digit 在 number 中出现至少一次

分析:

这道题不难就是字面意思,但是实现起来可能比较麻烦
这时候就体现到STL的优点了(首先你要知道)

源代码:

class Solution {
public:
    string removeDigit(string number, char digit) {
        string s;
        for(int i=0;i<number.size();i++)
        {
            if(number[i]==digit)
            {
                s=max(number.substr(0,i)+number.substr(i+1,number.size()-1),s);
            }
        }
        return s;
    }
};

第二题:

给你一个整数数组 cards ,其中 cards[i] 表示第 i 张卡牌的 值 。如果两张卡牌的值相同,则认为 
这一对卡牌 匹配 。
返回你必须拿起的最小连续卡牌数,以使在拿起的卡牌中有一对匹配的卡牌。如果无法得到一对匹配的卡 
牌,返回 -1 。
示例 1:
输入:cards = [3,4,2,3,4,7]
输出:4
解释:拿起卡牌 [3,4,2,3] 将会包含一对值为 3 的匹配卡牌。注意,拿起 [4,2,3,4] 也是最优方 
案。
示例 2:
输入:cards = [1,0,5,3]
输出:-1
解释:无法找出含一对匹配卡牌的一组连续卡牌。
提示:
1 <= cards.length <= 105
0 <= cards[i] <= 106

分析:

这道题就是让你求相同卡牌的距离的最小值

源代码:

class Solution {
public:
int minimumCardPickup(vector<int>& cards) {
    unordered_map<int ,int> arr;
    int mx=0x3f3f3f3f;
    for(int i=0;i<cards.size();i++)
    {
        if(arr.count(cards[i]))
        {
            mx=min(mx,i-arr[cards[i]]+1);
        }
        arr[cards[i]]=i;
    }
    return mx==0x3f3f3f3f ? -1:mx;
}
};