`
小菌子
  • 浏览: 21971 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

不使用库函数进行回文数字判断

阅读更多
不使用库函数,判断回文数字。
其实最核心的就是如何将一个正整型数字转成数组,我们可以使用数学的取模%和数学的整除/将数字的各个位数取出,逐一放入目标数组中即可。

public class ReverseNumber {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int input = 12321;
        int[] reverseNum = ReverseNumber.getReverse(input);
        int[] originalNum = ReverseNumber.getReverse(reverseNum);
        if (ReverseNumber.isSameArray(reverseNum, originalNum))
        {
            System.out.println("It is a reverse number.");
        } else
        {
            System.out.println("It is not a reverse number.");
        }
    }
    
    /*
     * 将目标输入的整数,不经过库函数,转成反序的数组A。
     * @input int originalNum 目标整数
     * @return int[] 返回反序的数组
     */
    public static int[] getReverse(int originalNum)
    {
        int[] reversedNum = new int[30];
        int i = 0;
        while(originalNum != 0)
        {
            reversedNum[i++] = originalNum % 10; //使用数学取模操作,获得最后一位,并计入目标数组中
            originalNum = originalNum / 10; //使用数学整除,移除上已经计入数组的最后一位。
        }
        
        return reversedNum;
    }
    
    /*
     * 将数组反向排列一次,得到一个A的反向数组B(即原来的整数的数组形式)
     * @input int[] reverseNum 要转序的数组
     * @return int[] 返回转序完毕的数组
     */
    public static int[] getReverse(int[] reverseNum)
    {
        int[] descNum = new int[30];
        int lengthOfNum = reverseNum.length;
        for(int i = 0; i < lengthOfNum; i++)
        {
            descNum[lengthOfNum - i -1] = reverseNum[i];
        }
        
        return descNum;
    }
    
     /*
      * 将数组A和数组B比较,看是否是反序一样的数组。
      * @input int[] originalNum, int[] reversNum 要比较的两个数组
      * @return boolean 返回判断结果,如果是回文数,返回true; 如果不是回文数,返回false.
      */
    public static boolean isSameArray(int[] originalNum, int[] reversNum)
    {
        boolean result = true;
        if (originalNum.length == reversNum.length)
        {
            int len = originalNum.length;
            for (int i =0; i < len; i++)
            {
                if (originalNum[i] != reversNum[len - i - 1])
                {
                    result = false;
                    break;
                }
            }
        }
        else
        {
            result = false;
        }
        
        return result;
    }

}
0
0
分享到:
评论

相关推荐

    华为机试参考题

    在代码中,通过反转数字判断是否与原数字相等,或者通过双指针从前和从后比较字符串中的字符是否完全相同来判断是否为回文字符串。 3. 字符串转整数:第四题要求将一个数字字符串如"1234"转换成对应的整数。这是...

    回文

    本项目使用C++语言来实现回文判断的功能。 在C++中,处理回文的主要方法有两种:一种是基于数组,另一种是基于指针。下面我们将详细讨论这两种方法。 1. **基于数组的方法**: 在这种方法中,我们首先创建一个与...

    一千之内的平方回文数.zip

    在`main`函数中,我们遍历1到100,计算每个数字的平方,然后判断其是否为回文,如果是则打印出来。 这就是关于“一千之内的平方回文数”这一问题的C语言实现。它涉及到了基本的循环、条件判断、字符串处理以及简单...

    Python练习集100题.pdf

    - 屏幕控制:使用库函数gotoxy()移动光标位置。 - 清屏函数:使用clrscr()清除屏幕内容。 - **实现思路**: 1. 导入必要的库。 2. 使用gotoxy()函数定位光标位置。 3. 使用clrscr()函数清除屏幕内容。

    《C 程序员面试算法宝典》读书笔记模板x.pptx

    1. 如何不使用库函数求解整数 x 的平方根 2. 如何进行骰子求和 3. 如何求解最多有多少个点在一条直线上的问题 4. 如何进行数字的二进制翻转 5. 如何把数字转换为二进制 6. 如何进行指数运算 7. 如何查找连续数字中...

    编程之法面试和算法心得1

    1.4 回文判断 回文是指正序和反序读都一样的字符串。可以使用双指针,一个从左向右,一个从右向左,比较对应位置的字符是否相同,如果所有对应位置的字符都相同,则为回文。 1.5 最长回文子串 最经典的解决方案是...

    2024年3月GESP认证真题(c++)

    - **单选题10**:题目要求编写一个程序判断一个正整数的各位数字是否均为偶数。 - 使用 `while` 循环逐位检查每个数字。 - 如果遇到奇数,则通过设置标志变量 `Flag` 来标识,并提前结束循环。 #### 3. 特殊问题...

    (信息学奥赛辅导)程序设计试题汇编(答案).pdf

    7. **回文数问题**:判断一个数是否为回文数,即正读和反读都一样的数,需要对数字进行拆分和比较。 8. **高精度数值计算问题**:处理大整数的计算,可能需要自定义大数类或利用库函数。 9. **数值计算问题**:...

    c语言经典代码(针对初学者)

    2.c模拟weindow下getch.c某月天数.c逆序.c逆序四位整数.c排序.c判断某个月的天数.c判断一个日期是否合法.c判断一个数是不是素数.c扑克.c全局数组实现整数栈.c全字符数字.c闰年.c三角形菱形.c生命细胞.c十整数逆序...

    c代码-判断一个正整数是否为回文数

    然而,对于回文数的判断,我们主要会用到字符串操作,因为这允许我们从两边同时检查数字的每一位。 在C语言中,可以将整数转换为字符串,然后比较其前半部分和后半部分是否相同。这里的关键步骤包括: 1. **输入...

    各种C语言字符串函数-笔试面试必备

    利用XOR异或运算特性,可以在不使用额外变量的情况下完成值的交换。这种方法虽然巧妙,但在实际应用中可能不如前两种方法直观易懂。 - **版本4 & 5: 重构版本3** 对版本3的进一步优化,使代码更加紧凑,但这通常...

    华为机试题目大全

    涉及到高精度计算,可能使用链表、数组或专门的库函数处理非常大的数值。 ### 35. 排序算法 计算机科学的核心,包括冒泡排序、快速排序、归并排序等多种算法。 ### 36-38. 字符串处理 涵盖字符串分割、删除、...

    C语言经典算法

    可以使用if语句进行两两比较,或者使用标准库函数`sort()`进行排序。 **示例代码:** ```c #include int main() { int x, y, z, temp; printf("请输入三个整数:"); scanf("%d %d %d", &x, &y, &z); if (x ...

    cpp代码-(一维数组/动态存储)判断一个数是否为回文数,即正读反读都一样的数。

    动态内存分配则是程序在运行时根据需要请求内存,使用new和delete关键字进行分配和释放。 以下是一个简单的C++代码示例,用于判断一个整数是否为回文数: ```cpp #include #include &lt;cstring&gt; // 引入字符串库,...

    C语言经典例题100道

    例如,给定数字1234,我们需要找出所有可能的不重复的三位数组合。 **示例代码**: ```c #include int main() { int i, j, k; printf("\n"); for (i = 1; i ; i++) { for (j = 1; j ; j++) { for (k = 1; k ...

    Modern C++ 11 知识点

    使用标准库函数chartolower将大写字符转换为小写。 8. lambda表达式是C++11中的一个特性,它允许定义匿名函数对象。lambda表达式可以用于sort、for_each和any_of等STL算法中。 9. sort函数可以对序列进行排序,nth...

    计算机2级上机操作题

    - 使用标准库函数(如`strlen()`、`strcat()`、`strcmp()`等)处理字符串问题。 ### 九、最大值与最小值 - 在一组数据中找到最大值和最小值。 - 可以使用循环结构遍历数组来实现。 ### 十、斐波那契数列 - ...

    c语言练习题目

    - **实现思路**: 接收用户输入的十进制正整数,使用数学方法或者标准库函数如`itoa`等进行进制转换,并输出结果。 **4. 循环右移** - **知识点**: 位运算、循环结构 - **实现思路**: 输入一个16进制无符号整数`m`...

    (精品word)C语言程序设计100个简单的经典例子.doc

    2. **条件判断** - `if...else`语句在多个题目中出现,用于根据特定条件执行不同代码块,如判断是否为素数(题目13)、回文数(题目30)等。 3. **函数调用** - 题目34和77展示了如何定义和调用自定义函数,这是...

Global site tag (gtag.js) - Google Analytics