题目链接:严格回文的数字
题目大意
将一个数 n 转化为 b 进制(b 为 2 到 n-2 的整数),如果在 b 进制下 n 都是回文字符串,那么 n 是严格回文的。是则返回 true;否则返回 false。
题意解析
直接将 n 的每一个 b 进制表示出来,在一个个判断是否回文,可以枚举。
知识点:进制转换
这个题目涉及到的就是进制转换,如何将十进制的 n 转换为其他进制?
我们需要用除 b 取余法。简单来说,我们将 n%b,将余数保存在数组,再将 n/b。不断地从重复上述操作,最后保存的数组就是将十进制转化的 b 进制数。
需要注意的是:保存的进制数是从左到右的,而正常的进制数都是从右到左。
代码
class Solution {
public:
bool zh(int n,int b)
{
vector<int> ans;
while(n)
{
ans.push_back(n%b);
n/=b;
}//将 n 转换为 b 进制数,除 b 取余法
for(int i=0;i<ans.size()/2;i++)
{//因为判断回文,正反看都是一样的,所以这里进制数不需要处理
if(ans[i]!=ans[ans.size()-i-1]) return false;
}
return true;
}
bool isStrictlyPalindromic(int n)
{
for(int i=2;i<=n-2;i++)
{//遍历判断回文即可
if(!zh(n,i)) return false;
}
return true;
}
};