括号匹配验证:
一个字符串中,包括字符 ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘, ‘]’。 要求写一个函数,验证字符串中这些括号是以正确的顺序匹配的。 注意:(, ), [, ], {, }可以互相嵌套。 譬如:"()"、"()[]{}"和"([]{[]})"是正确的,"(]" and "([)]"是不正确的
Tips:括号是可以嵌套的哦
private static final MappatternMatch = new ConcurrentHashMap<>(); static { patternMatch.put('(', ')'); patternMatch.put('{', '}'); patternMatch.put('[', ']'); } /** * 1. 括号匹配验证 * 一个字符串中,包括字符 ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘, ‘]’。 * 要求写一个函数,验证字符串中这些括号是以正确的顺序匹配的。 * 注意:(, ), [, ], {, }可以互相嵌套。 * 譬如:"()" 和"()[]{}"是正确的,"(]" and "([)]"是不正确的 * * @return */ public boolean bracketMatch(String bracketSource) { if (StringUtils.isBlank(bracketSource)) { return false; } char[] charArray = bracketSource.toCharArray(); Stack stack = new Stack<>(); stack.push(charArray[0]); for (int i = 1; i < charArray.length; i++) { char next = charArray[i]; if (stack.isEmpty()) { stack.push(next); continue; } Character first = stack.peek(); if (Objects.equals(next, patternMatch.get(first))) { stack.pop(); } else { stack.push(next); } } return stack.isEmpty(); }
福利1:
二分查找【直接使用JDK中的了,经典无法超越】:
JDK1.8 java.util.Collections#indexedBinarySearch(java.util.List<? extends java.lang.Comparable<? super T>>, T)
private staticint indexedBinarySearch(List > list, T key) { int low = 0; int high = list.size()-1; while (low <= high) { int mid = (low + high) >>> 1; //>>>:无符号右移,忽略符号位,空位都以0补齐 Comparable midVal = list.get(mid); int cmp = midVal.compareTo(key); if (cmp < 0) low = mid + 1; else if (cmp > 0) high = mid - 1; else return mid; // key found } return -(low + 1); // key not found }
福利2:
冒泡排序:
/** * 冒泡排序:升序 * * @param sourceList */ public void bubbleSort(ListsourceList) { if (sourceList == null || sourceList.isEmpty()) { return; } for (int i = 0; i < sourceList.size(); i++) { for (int j = 0; j < sourceList.size() - 1 - i; j++) { if (sourceList.get(j) > sourceList.get(j + 1)) { int tmp = sourceList.get(j); sourceList.set(j, sourceList.get(j + 1)); sourceList.set(j + 1, tmp); } } } }
完成代码见:
https://github.com/helloworldtang/spring-boot-cookbook/blob/v1.0.3-19.1.12/learning-demo/src/main/java/com/tangcheng/learning/exam/SearchExam.java