zoukankan      html  css  js  c++  java
  • LeetCode面试题46.把数字翻译成字符串

    题目要求

    算法分析

    先将数字转换成字符串,

    dp[i]代表,索引从0开始到i,所有字母翻译成字符串的种类数,

    dp[0] = 1;

    dp[1] = dp[0] + g(1)    //g(1)代表,索引0和1的两个数字是否能构成一个字母,如果是返回1,不是返回0

    dp[2] = dp[1] + dp[0]*g(2) //g(2)代表,索引1和2的两个数字是否能构成一个字母,如果是返回1,不是返回0

    ....

    dp[i] = dp[i-1] + dp[i-2]*g(i)  ////g(i)代表,索引i-1和i的两个数字是否能构成一个字母,如果是返回1,不是返回0

    遍历字符串,从dp[0]开始依次求到dp[n-1](n为字符串长度),便得出答案

    代码展示(C#)

    public class Solution {
        public int TranslateNum(int num) {
            string s = num.ToString();
            int n = s.Length;
            if(n<2){
                return 1;
            }
            int[] dp = new int[n];
    
            dp[0] = 1;
            dp[1] = dp[0]+MyFunc(1,s);
            for(int i = 2;i<n;i++){
                dp[i] = dp[i-1] + dp[i-2]*MyFunc(i,s);
            }
            return dp[n-1];
        }
    
        public int MyFunc(int i,string s){
            if(s[i-1]=='1'||s[i-1]=='2'&&s[i]<'6'){
                return 1;
            }
            else{
                return 0;
            }
        }
    }

    提交结果

  • 相关阅读:
    template(2.2)
    Filter过滤链条
    The 3n + 1 problem
    Struts2.3+Spring4.0
    康托展开
    templates(2.1)
    templates(1.2)
    templates(1.1)
    我和你
    Android 的上下文菜单: Context Menu
  • 原文地址:https://www.cnblogs.com/KingR/p/13071233.html
Copyright © 2011-2022 走看看