判断一个数是不是回文数

#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

int IsReverseStr(char *aStr)
{
    int i,j;
    int found=1;
    if(aStr==NULL)
        return -1;
    j=strlen(aStr);

    for(i=0;i<j/2;i++)
        /**************************
        第一个元素  *(aStr+0)
        第二个元素  *(aStr+1)
        第三个元素  *(aStr+2)
        第四个元素  *(aStr+3)
        第j个元素    *(aStr+j-1)
        ***************************/
        if(*(aStr+i)!=*(aStr+j-i-1))
        {
            found=0;
            break;
        }
    return found;
}
int main()
{
    int num;
    char str[50]={0};
    cout<<"请输入:\n";

    while(cin>>num)
    {
       cout<<"你输入的是:"<<num<<endl;
       itoa(num,str,10);
       cout<<"IsReverseStr? 1:yes | 0:no  Result: "<<IsReverseStr(str)<<endl;
       cout<<"请继续输入:\n";
    }
}
/*************************************
运行结果如下:
请输入:
1991
你输入的是:1991
IsReverseStr? 1:yes | 0:no  Result: 1
请继续输入:
2013
你输入的是:2013
IsReverseStr? 1:yes | 0:no  Result: 0
请继续输入:
2002
你输入的是:2002
IsReverseStr? 1:yes | 0:no  Result: 1
请继续输入:
1949
你输入的是:1949
IsReverseStr? 1:yes | 0:no  Result: 0
请继续输入:
^Z

Process returned 0 (0x0)   execution time : 26.582 s
Press any key to continue.

**************************************/

### 使用 `StringBuilder` 实现回文数检查 在 Java 中,可以通过使用 `StringBuilder` 的 `reverse()` 方法轻松实现回文数的检测。这种方法不仅简洁而且易于理解。 ```java public class PalindromeChecker { public static boolean isPalindrome(int number) { String original = Integer.toString(number); StringBuilder sb = new StringBuilder(original); String reversed = sb.reverse().toString(); return original.equals(reversed); } public static void main(String[] args) { int testNumber = 12321; if (isPalindrome(testNumber)) { System.out.println(testNumber + " 是一个回文数"); } else { System.out.println(testNumber + " 不是一个回文数"); } } } ``` 上述代码展示了如何利用 `StringBuilder` 来反转整并将其转换成字符串以便于比较[^1]。 ### 字逐位翻转法 另一种常见的做法是不依赖额外的据结构,而是通过对给定字逐位取余和除以10的方式构建反向字来进行对比: ```java package z; public class zz { public static void main(String[] args) { int x = 121; int temp = x; int num = 0; while (x != 0) { int ge = x % 10; x /= 10; num = num * 10 + ge; } if (num == temp) { System.out.println(temp + " 是一个回文数"); } else { System.out.println(temp + " 不是一个回文数"); } } } ``` 这段代码实现了基本逻辑:先保存原始值,在循环体内不断提取最后一位加入到新形成的逆序中去,直到原被完全处理完毕后再做最终判定[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值