B站的编程题,看似简单,其实不简单,大家来做一下

假设现在需要对一串数字字符串进行解码,我们知道改字符串的编码规则是
1->A
2->B
...
26->Z
输出数字N代表有多少种可能的结果
输入描述:
一个整数
输出描述:
一个整数

例如:
111
输出
3
对应的结果是
AAA 、AK、KA

public class Solution {
    public int numDecodings(String s) {
        if(s.length()==0||s.charAt(0)=='0'){
            return 0;
        }
        int dp[] = new int[s.length() +1];
        dp[0]=1;
        dp[1]=1;
        for(int i=2;i<=s.length();i++){
            if(s.charAt(i-1)!='0'){
                dp[i] += dp[i-1];
            }
            if(Integer.valueOf(s.substring(i-2,i))>=10
               && Integer.valueOf(s.substring(i-2,i))<=26){
                dp[i] +=dp[i-2];
            }
        }
        return dp[s.length()];
    }
}



#笔试题目##算法工程师#
全部评论
def numDecodings(s):     if not s:         return 0     dp = [0]*(len(s)+1)     dp[0] = 1     for i in range(1,len(dp)):         if s[i-1] != "0":             dp[i] = dp[i-1]         if i != 1 and "09"<s[i-2:i]<"27":             dp[i]+=dp[i-2]     return dp[-1] if __name__ == '__main__':     s = input()     res = numDecodings(s)     print(res)
点赞 回复 分享
发布于 2019-08-20 21:04
Leetcode decode ways原题
点赞 回复 分享
发布于 2019-08-20 21:06
public class Solution {     public int numDecodings(String s) {         if(s.length()==0||s.charAt(0)=='0'){             return 0;         }         int dp[] = new int[s.length() +1];         dp[0]=1;         dp[1]=1;         for(int i=2;i<=s.length();i++){             if(s.charAt(i-1)!='0'){                 dp[i] += dp[i-1];             }             if(Integer.valueOf(s.substring(i-2,i))>=10                && Integer.valueOf(s.substring(i-2,i))<=26){                 dp[i] +=dp[i-2];             }         }         return dp[s.length()];     } }
点赞 回复 分享
发布于 2019-08-20 23:45

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
1 9 评论
分享
牛客网
牛客企业服务