Leetcode部分代码(简单版EASY题)

7.Reverse Integer 反转整数

class Solution {
    public int reverse(int x) {
       List<Integer> aList = new ArrayList<Integer>();
		    	boolean sig = false;
		    	if(x<0){sig = true;x=Math.abs(x);
		    	if (x==Integer.MIN_VALUE){
		    		return 0;
		    	}
		    	}
		    	while(x!=0){
		    		aList.add(x%10);
		    		x=x/10;
		    	}
		    	if(aList.size()==0){
		    		return 0;
		    	}
		    	long sum = 0;
		    	int count =aList.size(); 
		    	for(int i = 0; i<count;i++){
		    		sum = sum + aList.get(i)*(long)(Math.pow(10, count-1-i));
		    	}
		    	if(sig){
		    		boolean resultSig = sum*-1<-(long)Math.pow(2, 31);
		    		if(resultSig){
		    			return 0;
		    		}else{
		    			return (int)sum*-1;
		    		}
		    	}
		    	else{
		    		boolean resultSig = sum>(long)Math.pow(2, 31)-1;
		    		if(resultSig){
		    			return 0;
		    		}else{
		    			return (int)sum;
		    		}
		    	}
    }
}

【注记】Max.abs当传入参数为Integer最小值,则不会返回正数,因为越界了,会返回数本身。坑~

9. Palindrome Number(回文字)

class Solution {
    public boolean isPalindrome(int x) {
      List<Integer> aList = new ArrayList<Integer>();
		    int l = x;
	    	if(x<0){return false;}
	    	else{
	    	while(x!=0){
	    		aList.add(x%10);
	    		x=x/10;
	    	}
	    	if(aList.size()==0){
	    		return true;
	    	}
	    	long sum = 0;
	    	int count =aList.size(); 
	    	for(int i = 0; i<count;i++){
	    		sum = sum + aList.get(i)*(long)(Math.pow(10, count-1-i));
	    	}
	        boolean resultSig = ((int)sum==l);
	    		if(resultSig){
	    			return true;
	    		}
	    		else{
	    			return false;
	    			}
	    	}   
    }
}

13. Roman to Integer  罗马数字转为阿拉伯数字

class Solution {
    public int romanToInt(String s) {
      int sum = 0;
	        int count = s.length();
	        

	        for(int i = 0 ;i<count;i++){
	        	switch(s.charAt(i)){
	        	case 'M': sum = sum + 1000;break;
	        	case 'D': sum = sum + 500;break;
	        	case 'I': 
  	                      if(i+2 <= count && s.substring(i,i+2).equals("IV")){
  	                    	  sum = sum + 4;
  	                    	  i++;
  	                    	  break;
	                      }
	                      if(i+2<=count && s.substring(i,i+2).equals("IX")){
	                    	  sum = sum + 9;
	                    	  i++;
	                    	  break;
	                      }else{
	                    	  sum = sum + 1;
	                    	  break;
	                      }
	                    
	        	case 'L': sum = sum + 50;break;
	        	case 'X': 
  	               		  if(i+2<=count && s.substring(i,i+2).equals("XL")){
  	               			  sum = sum + 40;
  	               			  i++;
  	               			  break;
  	               		  }
  	               		  if(i+2<=count && s.substring(i,i+2).equals("XC")){
  	               			  sum = sum + 90;
  	               			  i++;
  	               			  break;
  	               		  }else{
  	               			  sum = sum + 10;
  	               			  break;
  	               		  }
	        	case 'V': sum = sum + 5;break;
	        	case 'C': 
	        	          if(i+2<=count && s.substring(i,i+2).equals("CD")){
	        	        	  sum = sum + 400;
	        	        	  i++; 
	        	        	  break;
	        	          }
	        	          if(i+2<=count && s.substring(i,i+2).equals("CM")){
	        	        	  sum = sum + 900;
	        	        	  i++;
	        	        	  break;
	        	          }else{
	        	        	  sum = sum + 100;
	        	        	  break;
	        	          }
	        	}      	
	        }
	        return sum;  
    }
}

14. Longest Common Prefix(找字符串数组前缀)

class Solution {
    public String longestCommonPrefix(String[] strs) {
         	  	if(strs.length>1){
    	int[] respond = new int[strs.length];
    	for(int i = 0;i<strs.length;i++){
    		respond[i]=strs[i].length();
    	}
    	int index=0;
    	int minValue = respond[0];
    	for(int i=1;i<strs.length;i++){
    		if(respond[i]<minValue){
    			index = i;
    			minValue=respond[i];
    		}
    	}
    	boolean sig = true;
    	int count = 0;
    	if(minValue>0){
    	for(int k=0;k<minValue;k++){
    		char c=strs[index].charAt(k);
    		for(int j=0;j<strs.length;j++)
        	{
        		if(strs[j].charAt(k)==c){
        			continue;
        		}else{
        			sig=false;
        			break;
        		}
        	}
    		if(!sig){
    		break;
    		}else{
    			count++;
    		}
    	
    	}
    			if(count==0){
    				return "";
    			}
    			else{
    				return strs[index].substring(0,count);
    			}
    		}
    		
    	else{
    		return "";
    	}
    	}else if(strs.length==1){
    		return strs[0];
    	}else{
    		return "";
    	}
    	}
    }

20. Valid Parentheses(括号匹配)

class Solution {
    public boolean isValid(String s) {
      if(s.length()%2!=0){
			 return false;
		 }else{
			 List<String> left = new ArrayList<String>();
			 for(int i=0;i<s.length();i++){
				 switch(s.charAt(i)){
				 case '{': left.add("{");break;
				 case '}':
				 if(left.size()>0&&left.get(left.size()-1)=="{"){
					left.remove(left.size()-1); 
				 }else{
					 return false;
				 }
				 break;
				 case '[': left.add("[");break;
				 case ']': 
				 if(left.size()>0&&left.get(left.size()-1)=="["){
						left.remove(left.size()-1); 
					 }else{
						 return false;
					 }
				 break;
				 case '(': left.add("(");break;
				 case ')': 
					 if(left.size()>0&&left.get(left.size()-1)=="("){
							left.remove(left.size()-1); 
						 }else{
							 return false;
						 }
				 break;
					 
				 }
			 }
			 if(left.size()==0){
				 return true;
			 }else{
		 return false;}
		 }
    }
}

21. Merge Two Sorted Lists (两个有序链表合并成一个有序列表)

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
         ListNode p = null;
	        ListNode newListNode=null;
	        ListNode templ1=l1;
	        ListNode templ2=l2;
	        if(templ1!=null&&templ2!=null){
	        if(templ1.val<=templ2.val){
	        	ListNode tempNode = new ListNode(templ1.val);
        		p=tempNode;
        		newListNode=p;
        		templ1=templ1.next;
	        }else{
	        	ListNode tempNode = new ListNode(templ2.val);
        		p=tempNode;
        		newListNode=p;
        		templ2=templ2.next;
	        }
	        while(templ1!=null&&templ2!=null){
	        	if(templ1.val<=templ2.val){
	        		ListNode tempNode = new ListNode(templ1.val);
	        		templ1=templ1.next;
	        		p.next=tempNode;
	        		p=p.next;
	        	}else{
	        		ListNode tempNode = new ListNode(templ2.val);
	        		templ2=templ2.next;
	        		p.next = tempNode;
	        		p=p.next;
	        	}
	        }
	        if(templ1!=null){
	        	p.next=templ1;
	        }
	        if(templ2!=null){
	        	p.next=templ2;
	        }    
	        return newListNode;}else if(templ1==null&& templ2!=null){
	        	return templ2;
	        }else if(templ1!=null&& templ2==null){
	        	return templ1;
	        }
	        else{
	        	return null;
	        }
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值