题目考察的知识点:双指针

题目解答方法的文字分析:将十进制转换为二进制,然后判断是否回文

本题解析所用的编程语言:c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param x int整型 
     * @return bool布尔型
     */
string GetBinaryStringFromHexString(string strHex)
{
    string sReturn = "";
    unsigned int len = strHex.length();
    for (unsigned int i = 0; i < len; i++)
    {
        switch (strHex[i])
        {
        case '0': sReturn.append("0000"); break;
        case '1': sReturn.append("0001"); break;
        case '2': sReturn.append("0010"); break;
        case '3': sReturn.append("0011"); break;
        case '4': sReturn.append("0100"); break;
        case '5': sReturn.append("0101"); break;
        case '6': sReturn.append("0110"); break;
        case '7': sReturn.append("0111"); break;
        case '8': sReturn.append("1000"); break;
        case '9': sReturn.append("1001"); break;
        case 'a': sReturn.append("1010"); break;
        case 'b': sReturn.append("1011"); break;
        case 'c': sReturn.append("1100"); break;
        case 'd': sReturn.append("1101"); break;
        case 'e': sReturn.append("1110"); break;
        case 'f': sReturn.append("1111"); break;
        }
    }
    return sReturn;
}
    bool isPalindromeNumberIII(int x)
    {
        // write code here
	    char buffer[9] = { 0 };
	    snprintf(buffer, sizeof(buffer), "%08x", x);
        string s(buffer);
        s = GetBinaryStringFromHexString(s);

        int p1 = 0, p2 = s.size() - 1;
        while (p1 < p2)
            if (s[p1++] != s[p2--])
                return false;
        return true;
    }
};