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

把数字翻译成字符串

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

import java.util.*;


public class Solution {
    /**
     * 解码
     * @param nums string字符串 数字串
     * @return int整型
     */
    public int solve (String nums) {
       if(nums == null || nums.length() == 0) {
           return 0 ;
       }
       //预处理,出去前导零
        int index = 0 ; //第一个不为零的字符的索引
        for( ; index < nums.length() ; index ++) {
            if(nums.charAt(index) != '0') {
                break ;
            }
        }
        nums = nums.substring(index) ;
        if(nums.length() == 0) return 0 ;
        if(nums.length() == 1) return 1 ;
        int f[] = new int[nums.length()+1] ;//f[i]表示前i个数字可能的结果
        f[0] = 1 ;
        f[1] = 1 ;
        //转移方程:f[i] = [f[i-1],nums[i-1]能表示一个字母] + [f[i-2],nums[i-1,i-2]能表示一位字母]
        for(int i = 2 ; i < f.length ;  i++) {
            String lastnumStr = nums.substring(i-1,i) ;
            int lastnum = Integer.parseInt(lastnumStr) ;
            if(lastnum > 0) {//最后一个数字能代表一个字母
                f[i] += f[i-1] ;
            }
            
            lastnumStr = nums.substring(i-2,i) ;
            lastnum = Integer.parseInt(lastnumStr) ;
            if(lastnum >=10 && lastnum <= 26) {//如果最后两个数字能代表一个字母
                f[i] += f[i-2] ;
            }
        }
        return f[nums.length()] ;
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:21
被夸真的超级开心,好可爱的姐姐
码农索隆:老色批们不用脑补了,我把金智妮的图找来了查看图片
点赞 评论 收藏
分享
05-24 14:12
门头沟学院 Java
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
07-14 12:29
门头沟学院 Java
后端岗,实习三周感觉有点想跑路了,担心秋招被拉黑,有没有佬是字节HR知道情况的
从零开始的转码生活:你实习三周都想跑路,将来拿到offer真的愿意在这干十几二十年吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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