Leetcode | 面试刷题-简单级

前言:压根没想过还有刷编程题目的这一天,印象中从高一NOIP放弃开始就没刷过编程题了,大一的C没啥兴趣也就没刷,上机考啃老本险过。现在为了面个试还在leetcode上开始刷题,太悲惨了。先从简单级别的开始刷起吧。

1.整数反转

介绍:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
举例:
输入: 123 输出: 321
输入: 120 输出: 21
输入: 1234567899 输出: 0
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

思路:
最大的值与最小的值为:[−2^31, 2^31 − 1], 即:[-2147483648, 2147483647]
想一下什么时候会溢出。
y=y10+x%10,如果y=214748364,y10+x%10=214748364n(设最后一位为n),那么输入的值就是n463847412,要满足题意,n只能为1。此时不溢出。当y>214748364时,必定溢出。
同理,当y<-214748364时,也必定溢出。

int reverse(int x){
        int y = 0;
        while (x != 0) {
            if (y > 214748364 || y < -214748364) {
                return 0;
            }
            y = y * 10 + x % 10;
            x = x / 10;
        }
        return y;
}

2.判定字符是否唯一

介绍:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
举例:
输入: s = "leetcode" 输出: false 
输入: s = "abc" 输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。

看到挺多的人是使用set一行来完成的。

set用法:
>>> a = set('abracadabra')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
class Solution:
    def isUnique(self, astr: str) -> bool:
        return(len(astr)==len(set(astr)))

发布了107 篇原创文章 · 获赞 68 · 访问量 7755

猜你喜欢

转载自blog.csdn.net/weixin_43092232/article/details/105258957