[算法基础练习]最长括号匹配

/**最长括号匹配
	 * 
	 * 输入的字符串只包含左括号,右括号
	 * 1.起始匹配的位置start=-1,匹配的最长长度ml=0
	 * 2.遍历第i个字符c
	 * 3.如果c是左括号,压栈
	 * 4.如果c是右括号,则与栈顶元素进行匹配
	 *   4.1 如果栈为空,则此时的c无法匹配,更新start=i,为下一次匹配做准备
	 *   4.2 如果栈非空,则出栈
	 *      出栈后为空,则更新ml-max(i-start,ml)
	 *      出栈后不为空,则更新ml=max(i-t),t为栈顶元素
	 *  遍历n个字符,时间复杂度为O(n)
	 * 
* @param s * @return */ public int getMaxMatchLength(String s){ if(s==null||s.length()==0){ return 0; } Stack stack = new Stack(); int start = -1; int ml = 0; for(int i=0;i

你可能感兴趣的:(算法基础练习)