昨天去面试了一个新的公司

昨天去面试了一个新的公司

         昨天去家公司面试,过去了后叫先写个程序,我听成了先走程序,迷茫后才知道是叫写个判断括号匹配的程序。

想了下没什么难度,应该是看怎么实现吧,看到机器上之前的代码,居然也是判断括号,不过判断情况比较多,我当时也就只是从之前的代码出发改进了下,因为太多的判断看着不爽,就把括号的匹配情况放到个等量的数组里去加加,然后判断括号自己的数量是否相等就可以了,但是想到了会出现括号位置的问题而导致的数量相同,但是实际还是不匹配的情况,但是考虑到只是叫匹配数量就没有太多的思考,写的差不多还没来得及测试就被叫去面谈了,其间还有顿工作餐,味道还不错:)

         面试还算顺利,叫我去入职。

回来的公交车上又想起了这个判断括号,其实自己以前就考虑过这个问题了,用栈来实现,括号依次压入,遇到最近匹配的就弹出去,剩下就会是括号不成对的嘛,只是当时恍惚了没有想起,而且估计上机时间不会太允许就作罢。

       回来后便去测试了,代码应该是可行的。

 package stackStr;

import java.util.Stack;

/**
 * 判断括号是否配对
 * O(n^2)
 * @author HideHai
 */
public class TestStr {
	/**
	 * 定义需要判断的括号
	 */
	private static String testString = "()[]<>{}";
	/**
	 * 存放数据中的括号
	 */
	private static Stack stk = new Stack();

	/**
	 * 返回需要判断括号的字符数组
	 * @author HideHai
	 * @return
	 */
	private static char[] getTestCharArray(){
		if(testString.length()==0){
			System.out.println("没有括号被选择");
			System.exit(1);
		}
		char[] reArray =testString.toCharArray();
		return reArray;
	}
	/**
	 * 判断方法
	 * @author HideHai
	 * @param str
	 */
	private static boolean doMethod(String str){
		if(str.length() == 0 ){
			System.out.println("没有文本输入");
			System.exit(1);	
		}
		char[] testStrToChar = getTestCharArray();
		for(int i=0,lenToi = str.length();i0 && stk.peek().equals(tempBeforeIndex)){
							System.out.println("弹出括号:"+stk.pop());
						}else{
							stk.push(tempIndex);
						}
					}else{
						stk.push(tempIndex);
					}
				}
			}
		}
		if(stk.size()>0){	
			while(!stk.isEmpty()){
				System.out.println(stk.pop());
			}
			System.out.println("括号不配对");
			return false;
		}else{
			System.out.println("括号配对");
			return true;
		}
		
	}
	
	public static void main(String[] args) {
		doMethod("hello!(my name[is hhidehai]hehe)><<>><");
	}

}

Out:

弹出括号:[
弹出括号:(
弹出括号:<
弹出括号:<
<
>
括号不配对

留下回复