• 新浪微博:
  • 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:03-18

按键精灵安卓版
立即下载

软件版本:3.5.3
软件大小:46.2M
更新时间:03-02

按键精灵iOS版
立即下载

软件版本:1.7.3
软件大小:29.2M
更新时间:12-06

最新企业版UiBot
立即下载

软件版本:3.3
软件大小:282M
更新时间:08-06

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[神梦] 【每日一题】最小代价 - 2022.5.13 [复制链接]

1#
题目描述

给定一个整数n,通过删掉其中某一位数字,找出操作之后遗留的最大数字。

【示例】
输入:152
输出:52
解释:如果删掉1,得到52;如果删掉5,得到12;如果删掉2,得到15。因此最大方案是删掉1得到52。

题目难度:中等
题目来源:Simple Fun #79: Delete a Digit
题目交流: 584781753
  1. Import "SmAssert.dll"

  2. Function 最小代价(数字)
  3.     // 您的代码写在这里
  4. End Function


  5. SmAssert 最小代价(152) = 52
  6. SmAssert 最小代价(1001) = 101
  7. SmAssert 最小代价(10) = 1
复制代码

参考题解

***** 该内容需您回复才可浏览 *****

插件下载

 
【插件】神梦断言插件 SmAssert.dll,帮助开发者发现业务逻辑错误

2#

了解下

3#

SmAssert 最小代价(1001) = 101

4#

学习下

5#

从0-9循环 嵌套 从右往左循环数字
判断从0-9.有0删0,有1删1,以此类推,一直到成功删除

6#

SmAssert 最小代价(1001) = 101

7#

不一样的解法
Function 最小代价(数字)
    If IsNumeric(数字) = False or Len(数字) = 1 Then Exit Function
    Dim sNum, result
    sNum = CStr(数字)
    If 数字 < 0 Then
        result = For_最小代价(StrReverse(Replace(sNum, "-", "")),9,0,-1)     
    Else
        result = For_最小代价(StrReverse(sNum),0,9,1)
    End If
    If 数字 < 0 Then result = "-"&result
    最小代价 = Clng(result)
End Function

Function For_最小代价(sNum,start,finish,st)
    For i = start To finish step st
        result = Replace(sNum, Cstr(i), "", 1, 1)
        If Len(result) < Len(sNum) Then
            For_最小代价 = StrReverse(result)
            Exit Function
        End If
    Next
End Function

1001=101
-152=-12
1=
123456=23456
654321=65432
45123=4523

点评

神梦科技  思路不错👍  发表于 2022/5/13 12:58:07

    已有1评分我要评分查看所有评分

    发新话题 回复该主题