/*** 21、合并两个有序链表** @param l1* @param l2* @return*/public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {// 变量初始值ListNode result = new ListNode(-1);// 变量指针指向同一个地址ListNode item = result;while (l1 != null && l2 != null) {if (l1.val < l2.val) {item.next = l1;l1 = l1.next;} else {item.next = l2;l2 = l2.next;}item = item.next;}item.next = l1 == null ? l2 : l1;return result.next;}/*** 20、有效的括号* 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。* 有效字符串需满足:* 左括号必须用相同类型的右括号闭合。* 左括号必须以正确的顺序闭合。** @param s* @return*/public static boolean isValid(String s) {if (s.length() <= 1) {return false;}Map map = new HashMap<String, String>();map.put("(", ")");map.put("[", "]");map.put("{", "}");char[] chars = s.toCharArray();Stack stack = new Stack<String>();for (char item : chars) {if ('(' == item || '[' == item || '{' == item) {stack.push(String.valueOf(item));} else if (')' == item || ']' == item || '}' == item) {if (stack.empty()) {return false;}String top = (String) stack.pop();if (null == top) {return false;}if (!String.valueOf(item).equals(map.get(top))) {return false;}} else {return false;}}if (stack.empty()) {return true;} else {return false;}}/*** 13、罗马数字转整数** @param s* @return*/public static int romanToInt(String s) {if (s.length() > 15) {return 0;}int result = 0;char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {int item = getSignNumber(chars[i]);if (i != (chars.length - 1) && item < getSignNumber(chars[i + 1])) {result -= item;} else {result += item;}}return result;}/*** 13、罗马数字转整数-方法获取符合对应值** @param sign* @return*/public static int getSignNumber(char sign) {switch (sign) {case 'I':return 1;case 'V':return 5;case 'X':return 10;case 'L':return 50;case 'C':return 100;case 'D':return 500;case 'M':return 1000;default:return 0;}}
