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

把数字翻译成字符串

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()] ;
    }
}

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

分享一个菜鸟的成长记录

全部评论

相关推荐

Gaynes:查看图片
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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