当前位置:   article > 正文

LeetCode Hot100 生成特殊数字的最少操作

LeetCode Hot100 生成特殊数字的最少操作

给你一个下标从 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和全删这几种答案,从尾记录最短的长度。

代码

  1. class Solution {
  2. public:
  3. int minimumOperations(string num) {
  4. unordered_map<char, int> hashtable;
  5. int cnt = 0;
  6. char ch;
  7. for(int i = num.size()-1;i >= 0; --i)
  8. {
  9. ch = num[i];
  10. if((ch == '0' || ch == '5') && hashtable.find('0') != hashtable.end())
  11. return cnt-1;
  12. if((ch == '2' || ch == '7') && hashtable.find('5') != hashtable.end())
  13. return cnt-1;
  14. else
  15. {
  16. ++hashtable[ch];
  17. ++cnt;
  18. }
  19. }
  20. if(hashtable.find('0') == hashtable.end())
  21. return num.size();
  22. else
  23. return num.size()-1;
  24. }
  25. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/908735
推荐阅读
相关标签
  

闽ICP备14008679号