1. // string <=> vector
    2. int main(int argc, char *argv[]) {
    3. string str = "123456";
    4. vector<char> v;
    5. v.assign(str.begin(), str.end());
    6. for (char c : v) cout << c << ' ';
    7. cout << endl;
    8. }

    char <=> int char c = n + ‘0’; int n = c - ‘0’;

    1. // 通过反转数字来与原数字对比判断是否为回文数
    2. // 只需要反转后半段数组与前半段数字进行比较
    3. class Solution {
    4. public:
    5. bool isPalindrome(int x) {
    6. // 首先排除负数和10的倍数,它们都不是回文数
    7. if (x < 0 || (x != 0 && x % 10 == 0)) return false;
    8. int res = 0;
    9. // 如果是回文数的话,刚好反转一半退出循环
    10. // 如果不是回文数的话,循环退出后x和res也不会相等
    11. // 当反转的后半段数字大于前半段数字时退出循环,此时刚好反转到一半
    12. // 此时x是前半段数字,res是后半段数字
    13. while (x > res) {
    14. res = res * 10 + x % 10;
    15. x /= 10;
    16. }
    17. // 最后如果原数字长度为奇数时,要去掉前半段数组最后一位再进行判断,
    18. // 也就是原数字中处于中间位置的数字
    19. // 对比前半段数字和后半段数字是否相等
    20. return res == x || res/10 == x;
    21. }
    22. };