定义回文数的概念如下:
- 如果一个非负数左右完全对应,则该数是回文数,例如:121,22等。
- 如果一个负数的绝对值左右完全对应,也是回文数,例如:-121,-22等。
[要求]
输入一个整数N.
若N是回文整数输出"Yes",否则输出"No"
121
Yes
-121
Yes
998244353
No
num = input().strip('-')
print("Yes" if num == num[::-1] else "No") 然后依照题目要求来用O(log10n)的算法来求解,主要思路是对输入数字不断除以10取余来计算其翻转的数字,然后比较二者是否相等 import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Math.abs(Integer.parseInt(br.readLine()));
if(num == reverse(num))
System.out.println("Yes");
else
System.out.println("No");
}
private static int reverse(int num){
int reverseNum = 0;
while(num > 0){
reverseNum = reverseNum * 10 + num % 10;
num /= 10;
}
return reverseNum;
}
} #include <bits/stdc++.h>
using namespace std;
void F(string s){
int n = s.length();
for(int i=0,j=n-1;i<j;i++,j--)
if(s[i]!=s[j]){
cout<<"No"<<endl;
return;
}
cout<<"Yes"<<endl;
return ;
}
int main(){
string s;
cin>>s;
if(s[0]=='-')
F(s.substr(1));
else
F(s);
return 0;
} let line=readline()
let stack=[]
if(line[0]=='-')line=line.slice(1)
for(let i=0;i<line.length;i++){
stack.push(line[i])
}
let flag=0
for(let i=0;i<line.length;i++){
if(line[i]!=stack.pop()) flag=1
if(flag==1) break;
}
if(flag==1) console.log("No")
else console.log('Yes') #include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
bool judge(int n){
int help=1;
while(n/help>=10){
help*=10;
}
while(n){
if(n/help!=n%10)
return false;
n=(n%help)/10;
help/=100;
}
return true;
}
int main(){
int n;
cin>>n;
if(n<0){
n=abs(n);
}
if(judge(n)){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
return 0;
} 参考了大佬的书籍的思想,然后写出的代码,,,
var N = readline(); //或者输入的值
var n = Math.abs(N).toString(); //整数----->String字符
var len = n.length-1;
var flag = true; //是否为回文标记
for(var i=0;i<n.length/2;i++){ //字符串折半,并进行对比
if(n.charAt(i)!=n.charAt(len-i)){
flag= false;
break;
}
}
if(flag)
print("Yes");
else
print("No");
#include<iostream>
#include<string>
#include<limits.h>//定义最小整型INT_MIN
using namespace std;
int main() {
int N;
cin >> N;
if (N == INT_MIN) { return false; }
if (N < 0) {
N = abs(N);
}
string str = to_string(N);
int i = 0, j = str.size() - 1;
bool res = true;
while (i <= j) {
if (str[i] != str[j]) {
res = false;
break;
}
i++;
j--;
}
if (res) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
return 0;
}