leetcode刷题(一)

首先说明一下本人算法水平一般,所有题目的解决办法都是自己写出来的,可能不是最优解,时间复杂度空间复杂度都挺高,现在就先从简单题着手开始刷题,争取达到每日一练的效果!每过几天会谢谢关于刷题的心得

整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321
示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21
注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题思路:
1首先进行判断被反转的数是正数还是负数,如果是负数的话那么需要从第二位进行反转,如果是正数从第一位进行反转
2.通过(String)String.value(int x)方法获取到当前整数的字符串形式
3.把字符串转化为字符数组,新建一个StringBuffer进行倒序添加字符,注意正负数添加的位数不同
4.通过(int)Interger.parseInt(String str)获取反转的int值 判断是否溢出 用异常来处理,如果溢出直接返回0,否则返回result

public class Test7 {
 public static int  fun(int x)
 {
	  boolean flag=(x>0?true:false);
	  int end=(flag==true?0:1);
	  System.out.println(flag+""+end);
	  String str=String.valueOf(x);
	  char [] ch=str.toCharArray();
	  StringBuffer sb=new StringBuffer();
	  for(int i=ch.length-1;i>=end;i--)
	  {
		  sb.append(ch[i]);
	  }
	  int result=0;
	  try
	  {
	    result=Integer.parseInt(sb.toString());	 
	  }
	  catch (NumberFormatException e) {
		return 0;
	  }
	  return flag==true? result:-result;
	   
	  
	  
	  
 }
 public static void main(String[] args) {
	System.out.println(fun(1234567899));
}
}

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

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

思路:
1.判断整数的正负,把整数转化为字符串形式。
2.把字符串转化成一个字符数组,新建一个StiringBuffer倒序添加数组的值注意正负号的截至是不同的
3.最后进行判断 若是负数 末尾加“-"

public class Test9 {
   public static boolean isPalindrome(int x) {
	  
	   String str=String.valueOf(x);
	   boolean flag=x>=0?true:false;
	   int end=(flag==true)?0:1;
	   char [] ch=str.toCharArray();
	   StringBuffer sb=new StringBuffer();
	   for(int i=ch.length-1;i>=end;i--)
	   {
		   sb.append(ch[i]);
	   }
	   if(flag==false) sb.append("-");
	   String result=sb.toString();
	   if(result.equals(String.valueOf(x)))
		   return true;
	   else return false;
    }
   public static void main(String[] args) {
	   {
		   System.out.println(isPalindrome(10));
	   }
}
}

你可能感兴趣的:(算法)