题目描述:
有一个消息包含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];