3.19面试总结

介绍一下自己:

  balabal,学校专业,实习经历,项目经验。

一些Java基础,接口和抽象类的区别,重载和重写,进程和线程,gc回收,都能说上来。内存泄露,不懂。

看到项目中用到了Redis,具体怎么用的。描述了一下。让在白板上具体演示一下。顺便讲了一下敏感词过滤的算法。

然后一道算法题,一串字符串,判断其中出现的三种括号(){ } [ ],是否匹配。 用栈实现,以此判断字符是否是括号,不是括号就跳过;是左括号就压入栈中;是右括号就peek一下,看两个括号是否匹配,不匹配返回false,遍历结束,判断栈是否为空,为空返回true,不空返回false。

package com.leeshuai;

import java.io.*;
import java.security.Key;
import java.util.*;

/**
 * @description:
 * @author: leeshuai
 * @create: 2018-03-15 20:28
 **/
public class Main{
    public static void main(String[] args) {
      String str="(asd)asdf[asdf]}";
        System.out.println(result(str));
    }
    public static int isNotChar(char c){
        char[] chs={'[',']','(',')','{','}'};
        for(int i=0;i<chs.length;i++){
            if(c==chs[i])
                return i;        //是括号就返回下标,每队括号下标相邻;
        }
        return -1;            //不是括号返回-1;
    }
    public static boolean result(String str){
        char [] chs=str.toCharArray();
        Stack<Character> stack=new Stack<>();
        for(int i=0;i<chs.length;i++){
            if(isNotChar(chs[i])%2==0)     //左括号,压入栈
                stack.push(chs[i]);
             if(stack.isEmpty()&&isNotChar(chs[i])%2==1)    //栈为空,右括号,肯定错误,返回false
                 return false;
             if(isNotChar(chs[i])%2==1&&stack.isEmpty()==false){  //栈不为空,右括号,取出站最顶端的括号,看是否匹配,不匹配返回false,匹配弹出。
                char c=stack.peek();
                if(isNotChar(chs[i])-isNotChar(c)!=1)
                    return false;
                else{
                    stack.pop();
                }
            }
        }
        if(stack.isEmpty())            //最后判断栈是否为空,为空返回true,否则返回false,如果多了几个右括号会出现这种情况
          return true;
        return false;
    }
}

 

转载于:https://www.cnblogs.com/leeshuai/p/8604951.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值