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