难度简单1057收藏分享切换为英文关注反馈
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
class Solution {
public:
bool isPalindrome(int x)
{
if(x<0 ) return false;
if(x>=0 && x<=9) return true;
if(x%10 == 0) return false;
vector<int> v1;
while(x)
{
v1.push_back(x%10);
x= x/10;
}
int i = 0;
int j = 0;
for(i = 0,j = v1.size()-1 ; i<=j ; i++,j--)
{
if(v1[i] != v1[j])
return false;
}
return true;
}
};
c++之to_string()函数
函数原型:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
功能:
将数值转化为字符串。返回对应的字符串。
难度简单202收藏分享切换为英文关注反馈
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
class Solution {
public:
bool isPalindrome(int x)
{
string str1 = to_string(x);
// itoa():将整型值转换为字符串。
string str2 = str1;
reverse(str2.begin(),str2.end());
if(str2 == str1)
return true;
return false;
}
};
class Solution {
public:
bool isPalindrome(string s) {
char i_ch;
char j_ch;
bool i_b= false;
bool j_b= false;
//if(s.length()<1) return false;
if(s.length()<=1) return true;
for(int i=0,j=s.length()-1;i<=j;)
{
if((tolower(s.at(i))>='0' && tolower(s.at(i))<='9') ||
(tolower(s.at(i))>='a' && tolower(s.at(i))<='z') )
{
i_ch = tolower(s.at(i));
i_b= true;
}else{
i++;
i_b= false;
}
if((tolower(s.at(j)) >='0' && tolower(s.at(j))<='9') ||
(tolower(s.at(j)) >='a' && tolower(s.at(j))<='z') )
{
j_ch = tolower(s.at(j));
j_b= true;
}else{
j--;
j_b= false;
}
if(i_b && j_b)
{
int res = i_ch - j_ch;
if(res == 0)
{
i++;
j--;
}else{
return false;
}
}
}
return true;
}
};