lintcode刷题记录 512解码方法

题目描述:

有一个消息包含A-Z通过以下规则编码

'A' -> 1
'B' -> 2
...
'Z' -> 26

现在给你一个加密过后的消息,问有几种解码的方式

您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题? LinkedIn Amazon Airbnb Cryptic Studios Dropbox Epic Systems TinyCo Hedvig Uber Yelp Apple Yahoo Facebook Bloomberg Zenefits Twitter Microsoft Google Snapchat
感谢您的反馈
样例

给你的消息为12,有两种方式解码 AB(12) 或者 L(12). 所以返回 2

解题思路:

这题的思路是用动态规划的思路,也涉及String转成int的问题,而且题目中没有说不出现0,所以要注意排除一些特殊情况。

基本思路:

1:因为题目给的输入是String,先考虑转换为int数据处理。Sring可以看作是char型的数组,先取String的指定位置的数据,然后将取了的char数据转化为int数据。

2:和很多动态规划题目一样,建立一个和输入长度相关的数组,用于存放我们解题过程中出现的数据。这里建立数组A[n+1]。其中A[i]表示为在给定的输入下,前i-1个数据能有多少种解码方式。

3:先不考虑特殊情况,建立状态转移方程:如果第i-1个数nums[i-1]和第i个数nums[i-1]组成的两位数:10*nums[i-1]+nums[i]>26,也就是说这种情况下 第i个数加入进来考虑,也不会影响总的解密方案数,这个只能解密为i,此时状态转移方程为A[i]=A[i-1];

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值