赞
踩
给你一个下标从 0 开始的字符串 num
,表示一个非负整数。
在一次操作中,您可以选择 num
的任意一位数字并将其删除。请注意,如果你删除 num
中的所有数字,则 num
变为 0
。
返回最少需要多少次操作可以使 num
变成特殊数字。
如果整数 x
能被 25
整除,则该整数 x
被认为是特殊数字。
示例 1:
输入:num = "2245047" 输出:2 解释:删除数字 num[5] 和 num[6] ,得到数字 "22450" ,可以被 25 整除。 可以证明要使数字变成特殊数字,最少需要删除 2 位数字。
示例 2:
输入:num = "2908305" 输出:3 解释:删除 num[3]、num[4] 和 num[6] ,得到数字 "2900" ,可以被 25 整除。 可以证明要使数字变成特殊数字,最少需要删除 3 位数字。
示例 3:
输入:num = "10" 输出:1 解释:删除 num[0] ,得到数字 "0" ,可以被 25 整除。 可以证明要使数字变成特殊数字,最少需要删除 1 位数字。
只要结尾是00,75,25,50还有只剩0和全删这几种答案,从尾记录最短的长度。
- class Solution {
- public:
- int minimumOperations(string num) {
- unordered_map<char, int> hashtable;
- int cnt = 0;
- char ch;
- for(int i = num.size()-1;i >= 0; --i)
- {
- ch = num[i];
- if((ch == '0' || ch == '5') && hashtable.find('0') != hashtable.end())
- return cnt-1;
- if((ch == '2' || ch == '7') && hashtable.find('5') != hashtable.end())
- return cnt-1;
- else
- {
- ++hashtable[ch];
- ++cnt;
- }
- }
- if(hashtable.find('0') == hashtable.end())
- return num.size();
- else
- return num.size()-1;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。