剑指offer-20200311

20200311

题目 :把数组排列成最小的数

输入一个正整数数组,把数组里所有的数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

code

class Solution {
    public String minNumber(int[] nums) {
         ArrayList<String> list = new ArrayList<String>();
    for(int i:nums){
        list.add(String.valueOf(i));
    }
    StringBuffer sb = new StringBuffer();
    list.sort((o1,o2) -> (o1+o2).compareTo(o2+o1));
    
    for(String s:list){
        sb.append(s);
    }
    return sb.toString();
    }
}

题目 :把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

示例:

输入: 12258
输出: 5
解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"
//回溯
class Solution{
    private int count = 0;
    public int translateNum(int num){
        String s = String.valueOf(num);
        backtrack(0,s);
        return count;
    }
    public void backtrack(int start, String s){
        if(start == s.length()){
            count++;
            return;
        }
        if(s.charAt(start) >= '0' && s.charAt(start) <= '9'){
            backtrack(start + 1,s);
        }
        if(start < s.length() - 1){
            String sub = s.substring(start,start+2);
            if(sub.compareTo("1/") > 0 && sub.compareTo("26")<0){
                backtrack(start + 2,s);
            }
        }
    }
}
发布了94 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_31900497/article/details/104791451