leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数

简介: leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数

leetcode7.整数反转


题目


给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。


题目链接


思路


题目给了我们一个整数x,我们需要把他进行反转,对于这个x,我们需要每次弹出x最低位,将最低位插

入到result的末尾。这样,x的低位就变成了result的高位,也就完成了反转。

需要注意的是我们要判断当前的结果是否越界。


代码Java


1. class Solution {
2.     public int reverse(int x) {
3.         int result=0;
4.         int INT_MAX=Integer.MAX_VALUE;
5.         int INT_MIN=Integer.MIN_VALUE;
6.         while(x!=0){
7.             int num=x%10;
8.             x/=10;
9. 
10.             if (result>INT_MAX/10 || (result==INT_MAX/10 && num > INT_MAX%10)){
11.                 return 0;
12.             }
13. 
14.             if (result<INT_MIN/10 || (result==INT_MIN/10 && num < INT_MIN%10)){
15.                 return 0;
16.             }
17. 
18.             result=result*10+num;
19.         }
20.         return result;
21. 
22.     }
23. }


leetcode8.字符串转换整数


题目


请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

读入字符串并丢弃无用的前导空格

检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。

读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。

将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。

如果整数数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。

返回整数作为最终结果。

注意:

本题中的空白字符只包括空格字符 ' ' 。

除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

题目链接


思路


直接模拟即可


代码Java


1. class Solution {
2.     public int myAtoi(String s) {
3.         //获取int的边界值
4.         int INT_MAX=Integer.MAX_VALUE;
5.         int INT_MIN=Integer.MIN_VALUE;
6.         int len = s.length();
7. 
8.         //如果长度为0,则直接返回
9.         if(len==0) return 0;
10.         
11.         int res=0; //结果
12.         int i=0;  //下标志
13.         int flag=1; //正负号
14.         char[] s1=s.toCharArray(); //转化为char
15.         
16.         while(s1[i]==' ' && i<len-1){i++;} //跳过前面的空格
17.         if(s1[i]=='-'){flag=-1;} 
18.         if(s1[i]=='-' || s1[i]=='+'){i++;}
19. 
20.         //开始读数字
21.         while(i<len && Character.isDigit(s1[i])){
22.             int r=s1[i]-'0';
23.             //判断是否越界
24.             if(res>INT_MAX/10 || (res==INT_MAX/10 && r>7)){
25.                 return flag>0 ? INT_MAX:INT_MIN;
26.             }
27.             res=res*10+r;
28.             i++;
29.         }
30.         return flag>0 ? res:-res;
31.     }
32. }


leetcode9.回文数


题目


给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

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

例如,121 是回文,而 123 不是。


题目链接


思路


模拟一遍即可


代码python


1. class Solution:
2.     def isPalindrome(self, x: int) -> bool:
3.         s=str(x)
4. 
5.         i=0
6.         j=len(s)-1
7.         while i<j:
8. if s[i]==s[j]:
9.                 i+=1
10.                 j-=1
11. continue
12. else:
13. return False
14. return True
目录
相关文章
|
30天前
|
机器学习/深度学习 算法
力扣刷题日常(一)
力扣刷题日常(一)
20 2
|
1月前
|
存储 索引
《LeetCode》—— LeetCode刷题日记
《LeetCode》—— LeetCode刷题日记
|
1月前
|
搜索推荐
《LeetCode》——LeetCode刷题日记3
《LeetCode》——LeetCode刷题日记3
|
3天前
[leetcode~数位动态规划] 2719. 统计整数数目 hard
[leetcode~数位动态规划] 2719. 统计整数数目 hard
|
5天前
刷题之Leetcode160题(超级详细)
刷题之Leetcode160题(超级详细)
9 0
|
5天前
刷题之Leetcode206题(超级详细)
刷题之Leetcode206题(超级详细)
13 0
刷题之Leetcode206题(超级详细)
|
5天前
|
索引
刷题之Leetcode707题(超级详细)
刷题之Leetcode707题(超级详细)
10 0
|
5天前
|
索引
刷题之Leetcode35题(超级详细)
刷题之Leetcode35题(超级详细)
12 0
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
12天前
【力扣】9. 回文数
【力扣】9. 回文数