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