疏窗

  • 首页
  • 生活
  • Java
  • Python
  • Golang
  • 其他
  • 归档

  • 搜索
leetcode jdk 生活 nas nosql 数据库 线程 爬虫 中间件

leetcode第九题 回文数

发表于 2022-06-23 | 分类于 Java | 0 | 阅读次数 1452

题目:

/**
 * 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
 * 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
 * 进阶:你能不将整数转为字符串来解决这个问题吗?
 *
 * 来源:力扣(LeetCode)
 * 链接:https://leetcode.cn/problems/palindrome-number
 * 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
 */

难度:

简单

思路分析:

将整数x转成字符串x,再根据长度是否能够整除2来分别求出前半段和后半段字符串,最后通过比较前后两段的值来得出是否是回文整数

代码:

执行用时:32 ms, 在所有 Java 提交中击败了5.06%的用户

内存消耗:42 MB, 在所有 Java 提交中击败了5.08%的用户

boolean isPalindrome(int x) {
        String value = String.valueOf(x);
        Integer length = value.length();
        String start;
        String end;
        if(length % 2 == 1){
            int index = (length / 2);
            start = value.substring(0,index);
            end = value.substring(index + 1,length);
        }else{
            int index = length / 2 ;
            start = value.substring(0,index);
            end = value.substring(index,length);
        }
        System.out.println("start:"+start+"\n end:"+end);
        for(int i = 0;i < start.length();i++){
            if(start.charAt(i) != end.charAt(start.length() - i - 1)){
                return false;
            }
        }
        return true;
}

优化后的代码:

执行用时:7 ms, 在所有 Java 提交中击败了23.63%的用户

内存消耗:41 MB, 在所有 Java 提交中击败了26.85%的用户

    static boolean isPalindrome(int x) {
        String value = String.valueOf(x);
        Integer length = value.length();
        int index = (length / 2);
        String start = value.substring(0,index);
        String end;
        if(length % 2 == 1){
            end = value.substring(index + 1,length);
        }else{
            end = value.substring(index,length);
        }
        for(int i = 0;i < start.length();i++){
            if(start.charAt(i) != end.charAt(start.length() - i - 1)){
                return false;
            }
        }
        return true;
    }

不将整数转字符串的实现:

执行用时:8 ms, 在所有 Java 提交中击败了13.40%的用户

内存消耗:41.1 MB, 在所有 Java 提交中击败了17.32%的用户

public boolean isPalindrome(int x) {
        if(x < 0 || x % 10 == 0 && x != 0){
            return false;
        }
        if(x>0 && x<10){
            return true;
        }
        List<Integer> list = new ArrayList<>();
        list = getList(list,x);
        for(int i = 0;i < list.size();i++){
            if(!list.get(i).equals(list.get(list.size()-i-1))){
                return false;
            }
        }
        return true;
    }
    List<Integer> getList(List<Integer> list ,int x){
        Integer y = x / 10;
        Integer z = x % 10;
        if(y < 10){
            list.add(z);
            list.add(y);
        }else{
            list.add(z);
            getList(list,y);
        }
        return list;
}
打赏作者
疯子虾夫 微信支付

微信支付

疯子虾夫 支付宝

支付宝

  • 本文作者: 疯子虾夫
  • 本文链接: https://hefengwei.com/archives/leetcode第九题回文数md
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# leetcode
jdk9-17部分新特性使用
leetcode第十三题 罗马数字转整数
  • 文章目录
  • 站点概览
疯子虾夫

疯子虾夫

24 日志
5 分类
9 标签
RSS
Creative Commons
© 2025 疯子虾夫
由 Halo 强力驱动
|
主题 - NexT.Mist v5.1.4
赣ICP备2024026242号

粤公网安备 44010602005909号