文章目录
前言:压根没想过还有刷编程题目的这一天,印象中从高一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)))