Leetcode9. Palindrome Number

每日必刷

题目

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

思路

这是一道很简单的题,我们只需要考虑到一些特殊情况,比如说负数不是回文数,还有最后一位为0的非零数,还有0
考虑到这些以后,解题就很简单了。
我的思路是,像昨天那道题,直接化为字符串,这样就直接忽略了负数的情况,然后翻转字符串,就很简单了。

代码

static int x = [](){ios::sync_with_stdio(false); cin.tie(nullptr); return 0; }();

class Solution {
public:
    bool isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        std::string s = std::to_string(x);
        if (s[s.length()-1] == '0' and s != "0") {
            return false;
        }
        else{
            std::string tmp = s;
            std::reverse(s.begin(), s.end());
            if (s == tmp) {
                return true;
            }
            else{
                return false;
            }
    
        }
        

    }
};

说来很惭愧,我第一次提交,用时160ms,着实吓了我一跳。
本来昨天8ms解决的问题,我今天才拿来用,结果...

骚操作

看了一下第一名做的代码,我发现了一个新天地:
先看代码:

static int x = [](){ios::sync_with_stdio(false); cin.tie(nullptr); return 0; }();
class Solution {
public:
    bool isPalindrome(int x) {
        int numSrc = x;
        long long numDst = 0;
        if (x < 0)
        {
            return false;
        }

        while (numSrc)
        {
            numDst = numDst * 10 + numSrc % 10;
            numSrc /= 10;
        }

        return (numDst == x);
    }
};

看了一下,他用的是昨天的第二种方法,模10取余的方法,来进行回文,这个还比较正常,最骚的是第一句话,我把它加上后,时间瞬间从160ms变成了120ms,于是我去查了一下:
这里面用到了c++ 11的内容:
1、lambda表达式
2、auto自动推断
3、C++与C的兼容性

我们单来分析一下这句话:

static int x = [](){ios::sync_with_stdio(false);cin.tie(nullptr);return 0;}

这句话首先用了忽略返回值的lambda表达式(自动推断),然后,sync_with_stdio()实际上是说是否兼容scanf和printf,是将cin与scanf绑定在一起的函数,而cin.tie()则是用来绑定cin与cout的。
我们取消了这两种,速度自然就提升了上来。

反思

1、string直接赋值是浅复制
2、algrothm和string里面都有翻转,也都没有返回值
3、auto可以用来类型推断。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 除以10以后,再构造一个newx,相等则是回文数
    wshxj123阅读 266评论 0 0
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    AIM外星人阅读 1,321评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,994评论 0 2
  • 体验入 今晚医疗部门开会,每个人都清楚完整的表达了自己的需求渴望 找核心 沟通,交流 转生用 只有你清楚的表达了自...
    93650345d0d1阅读 159评论 0 0
  • 我最喜欢你为了我变成我喜欢的样子的时候,也最享受我努力变成你喜欢的样子的过程。 尽管跟他吵了如此大的架,但我还是过...
    琪琪巫阅读 714评论 0 1

友情链接更多精彩内容