符号位使用变量判断,1为正,0为负,使用first判断是否进入数字扫描,使用循环进行迭代,并判断数字是否越界
代码如下:
package com.qyx.Tree; /** * * @author QYX * */ public class StringTransactionNumber { public int myAtoi(String str) { int ans=0;//存储结果 int flag=1;//存储正负号 int first=1;//判断是否进入数字识别 int len=str.length(); for(int i=0;i<len;i++) { char temp=str.charAt(i); if(first==1) { if(temp==' ') { continue; }else if(temp=='+') { flag=1; }else if(temp=='-') { flag=-1; }else if(temp>='0'&&temp<='9') { ans=ans*10+(int)(temp-'0'); }else{ return 0; } first=0; }else{ if(temp>='0'&&temp<='9') { //正数是否越界 if(flag==1 && (ans>Integer.MAX_VALUE/10 || (ans==Integer.MAX_VALUE/10 && temp>'7'))) return Integer.MAX_VALUE; //负数是否越界 if(flag==-1 && (ans>Integer.MAX_VALUE/10 || (ans==Integer.MAX_VALUE/10 && temp>'8'))) return Integer.MIN_VALUE; ans=ans*10+(int)(temp-'0'); }else{ return flag*ans; } } } return flag*ans; } }
使用ArrayList进行存储,再使用Collections工具类进行排序,然后使用增强foreach循环遍历生成新链表,返回新链表头结点
package aa; import java.awt.Frame; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MergeList { public ListNode merge(ListNode l1,ListNode l2) { List<Integer> list=new ArrayList<>(); ListNode L1=l1; ListNode L2=l2; while(true) { if(L1!=null) { list.add(L1.val); L1=L1.next; } if(L2!=null) { list.add(L2.val); L2=L2.next; } if(L1==null&&L2==null) { break; } } Collections.sort(list); ListNode first=null; ListNode temp=first; for(Integer x:list) { ListNode node=new ListNode(x); if(temp != null){ temp.next = node; }else{ first = node; } temp = node; } return first; } } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }