lintcode 744
已知:
Given a integer k, find the sum of first k even-length palindrome numbers.
Even length here refers to the number of digits of a number is even.
示例:
Given k = 3, return 66 // 11 + 22 + 33 = 66 (Sum of first three even-length palindrome numbers)
Given k = 10, return 1496
// 11 + 22 + 33 + 44 + 55 + 66 + 77 + 88 + 99 + 1001 = 1496
思路:
这道题思路本身并不复杂,因为求得是偶数位数的回文数,我们可以令每个符合要求的回文数分成左右两段,而回文数的大小则是由左半计算的,也就是说(1,2,3,4,5,6,7,8,9,10,11,12 … xy)对应(11,22,33,44,55,66,77,88,99,1001,1111,1221 … xyyx), 左半边越大,回文数越大,这个结论是正确也很容易证明的。也就是说,题意就是 1 - k 作为左半部分的回文数的和为多少
代码:
public class Solution {
public int sumKEven(int k) {
int ret = 0;
for (int i = 1; i <= k; i++) {
ret += calculate(i);
}
return ret;
}
private int calculate(int num) {
String left = String.valueOf(num);
//如 123 -> 321 这里使用StringBuilder自带的reverse方法
String right = new StringBuilder().append(left).reverse().toString();
return Integer.valueOf(left + right);
}
}
谢谢您的阅读,希望对您有所帮助(〃’▽’〃)