Sum of first K even-length Palindrome numbers

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

谢谢您的阅读,希望对您有所帮助(〃’▽’〃)

猜你喜欢

转载自blog.csdn.net/mio_bass/article/details/78863624