public class E46Translation {
//计算数字的翻译方式,1-'a'... 25-'z'
public static int getTranslationCount(int number) {
if (number < 0)
return -1;
char[] numbers = String.valueOf(number).toCharArray();
return getTranslationCount(numbers);
}
private static int getTranslationCount(char[] numbers) {
int length = numbers.length;
//count[i]记录以第i个数字开头字段的翻译方式数量
int[] counts = new int[length];
for (int i = length - 1; i >= 0; i--) {
int count = 0;
//0-9数字的翻译方式计算
if (i < length - 1)
count += counts[i + 1];
else
count += 1;
//10-25数字的翻译方式计算
if (i < length - 1) {
int sum = Integer.valueOf(numbers[i] + String.valueOf(numbers[i + 1]));
if (sum >= 10 && sum <= 25) {
if (i < length - 2)
count += counts[i + 2];
else
count += 1;
}
}
counts[i] = count;
}
return counts[0];
}
//测试用例
public static void main(String[] args) {
int number = 12258;
System.out.println(E46Translation.getTranslationCount(number)); //5
}
}
把数字翻译成字符串(Java实现)
最新推荐文章于 2022-08-23 11:45:03 发布