首页 > 试题广场 >

【编程题】将给定的数转换为字符串,原则如下:1对应 a,2对

[问答题]
【编程题】将给定的数转换为字符串,原则如下:1对应 a2对应b…..26对应z,例如12258可以转换为"abbeh", "aveh", "abyh", "lbeh" and "lyh",个数为5,编写一个函数,给出可以转换的不同字符串的个数。
//动态规划
int dp(String str){
if(str==null || str.length()==0)
return 0;
int len=str.length();
int[] dp=new int[len+1];
dp[len]=1;
dp[len-1]=str.charAt(len-1)=='0' ? 0:1;
for(int i=len-2;i>=0;i--){
if(str.charAt(i)=='0')
dp[i]=0;
else{
dp[i]=dp[i+1]+( str.charAt(i+1)-'0'*10+str.charAt(i+2)-'0'<=26 ?dp[i+2]:0);
}
}
return dp[0];
编辑于 2019-04-12 19:00:36 回复(0)
动态规划
class Main{
    public static void main(String[] args){
        System.out.println(new Main().getNums(13246));
    }
    public int getNums(int a){
        int first = 1, second = first;
        char[] chars = String.valueOf(a).toCharArray();
        for(int i = 0; i < chars.length; i++){
            if (i != 0 && (chars[i-1]-'0' <3) && (chars[i]) - '0' < 7){
                int tmp = second;
                second += first;
                first = tmp;
            }else{
                first = second;
            }
        }
        return second;
    }
 
}


发表于 2020-07-27 22:12:41 回复(0)
def zimu1(x):
    l=len(x)
    if l==1:
        return 1
    if l==2:
        if int(x[-2]+x[-1])<=26:
            return 2
        return 1
    if int(x[-2]+x[-1])<=26:
        return zimu1(x[:-1])+zimu1(x[:-2])
    return zimu1(x[:-1])
x=input()
x=list(x)
x=zimu1(x)
print(x)
发表于 2019-08-31 22:41:22 回复(0)