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

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

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

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

发新话题 回复该主题

[神梦] 【每日一题】数字翻译成字符串 - 2022.07.02 [复制链接]

1#
题目描述

有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。
我们把一个字符串编码成一串数字,再考虑逆向编译成字符串。
由于没有分隔符,数字编码成字母可能有多种编译结果,例如 11 既可以看做是两个 ‘a’ 也可以看做是一个 ‘k’ 。但 10 只可能是 ‘j’ ,因为 0 不能编译成任何结果。
现在给一串数字,返回有多少种可能的译码结果。
数据范围:字符串长度满足 0 <n≤90

【示例1】
输入:"12"
返回值:2
说明:2种可能的译码结果("ab" 或"l")

【示例2】
输入:"31717126241541717"
返回值:192
说明:192种可能的译码结果

题目难度:中等
题目来源:把数字翻译成字符串
题目交流: 584781753
  1. Import "SmAssert.dll"

  2. Function 数字翻译成字符串(数字)
  3.     // 您的代码写在这里
  4. End Function


  5. SmAssert 数字翻译成字符串("12") = 2
  6. SmAssert 数字翻译成字符串("31717126241541717") = 192
复制代码

参考题解

  1. Import "SmAssert.dll"

  2. Function 数字翻译成字符串(数字)
  3.     
  4.     '【作者】:神梦无痕
  5.     '【QQ】:1042207232
  6.     '【Q群】:584781753
  7.     
  8.     Dim i, dp
  9.     
  10.     ' 排除0
  11.     If 数字 = 0 Then 数字翻译成字符串 = 0 : Exit Function
  12.     ' 10 和 20 和个位数只有 1 种情况
  13.     If 数字 = 10 Or 数字 = 20 Or Len(数字) = 1 Then 数字翻译成字符串 = 1 : Exit Function
  14.     
  15.     ' 出现无法编译则为 0 种情况
  16.     For i = 1 To Len(数字)
  17.         If Mid(数字, i, 1) = 0 Then
  18.             If Mid(数字, i - 1, 1) <> "1" And Mid(数字, i - 1, 1) <> "2" Then
  19.                 数字翻译成字符串 = 0
  20.                 Exit Function
  21.             End If
  22.         End If
  23.     Next
  24.     
  25.     ' 数组初始化为 1
  26.     dp = Split(Space(Len(数字) + 1), " ")
  27.     For i = 0 To Len(数字)
  28.         dp(i) = 1
  29.     Next
  30.     For i = 2 To Len(数字)
  31.         If (Mid(数字, i - 2 + 1, 1) = "1" And Mid(数字, i - 1 + 1, 1) <> "0") Or _
  32.          (Mid(数字, i - 2 + 1, 1) = "2" And Mid(数字, i - 1 + 1, 1) > "0" And Mid(数字, i - 1 + 1, 1) < "7") Then
  33.          dp(i) = dp(i - 1) + dp(i - 2)
  34.         Else
  35.             dp(i) = dp(i-1)
  36.         End If
  37.     Next
  38.     
  39.     数字翻译成字符串 = dp(Len(数字))
  40. End Function


  41. SmAssert 数字翻译成字符串("12") = 2
  42. SmAssert 数字翻译成字符串("31717126241541717") = 192
复制代码










插件下载

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

2#

看看

3#

辅导辅导辅导辅导

4#

11111

111111

发新话题 回复该主题