题解 | #把数字翻译成字符串#

把数字翻译成字符串

http://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668

动态规划题解

问题定义:dp[i]表示长度为i的字符串有多少种匹配方式

递推公式推理:字符只有两位,所以当前i这个位置的问题是由:1.当前选i为一个字母;2.选i和i-1组合一起作为字母;得出递推公式 dp[i] = dp[i-1] + dp[i-2]

*组合时注意的情况,是从1-26编号,选一个数组为0不能递推,组合数小于10大于26不能递推

import java.util.*;

public class Solution {
    public int solve (String nums) {
       int[] dp = new int[nums.length() + 1];
       int temp;
        
       dp[0] = 1;
       if(nums.charAt(0) - '0' >0)dp[1] = 1;
       else dp[1] = 0;//如果第一个字母为0不算一种情况
       
        for(int i = 2; i < nums.length()+1; i++) {
           temp = nums.charAt(i-1)-'0';
           if(temp > 0)dp[i] += dp[i-1];
           
           temp = nums.charAt(i-1)-'0' + (nums.charAt(i-2)-'0')*10;
           if(temp>=10&&temp<=26)dp[i]+=dp[i-2];
       }
        return dp[nums.length()];
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务