码迷,mamicode.com
首页 > 编程语言 > 详细

【面试算法题】Java Stack 类的使用

时间:2018-10-30 17:10:35      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:判断   har   search   相同   public   class   cto   字符串   shm   

Java Stack 类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
堆栈只定义了默认构造函数,用来创建一个空栈。

常用方法
1 boolean empty()
测试堆栈是否为空。

2 Object peek( )
查看堆栈顶部的对象,但不从堆栈中移除它。

3 Object pop( )
移除堆栈顶部的对象,并作为此函数的值返回该对象。

4 Object push(Object element)
把项压入堆栈顶部。

5 int search(Object element)
返回对象在堆栈中的位置,以 1 为基数。

题目:

给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判断字符串是否有效。

有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。
3、注意空字符串可被认为是有效字符串。

如:"(([]){})"

题解:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Stack;

public class TestHashMapBoolean {

    public static boolean isValid(String s) {

        HashMap<Character,Character> ss = new HashMap<Character,Character>();
        ss.put(‘(‘,‘)‘);
        ss.put(‘{‘,‘}‘);
        ss.put(‘[‘,‘]‘);

        HashMap<Character,Boolean> sbool = new HashMap<Character,Boolean>();
        sbool.put(‘(‘,true);
        sbool.put(‘{‘,true);
        sbool.put(‘[‘,true);
        sbool.put(‘)‘,false);
        sbool.put(‘}‘,false);
        sbool.put(‘]‘,false);

        ArrayList<Character> sList=new ArrayList<Character>();

        for(int i=0; i<s.length();i++){
            sList.add(s.charAt(i));
        }

        if(sList.size() == 0){
            return true;
        }

        Stack<Character> stack = new Stack<Character>();

        for(int i=0; i<sList.size();i++){
            if(stack.empty()) {
                stack.push(sList.get(i));
            }else if (sbool.get(stack.peek()) && ss.get(stack.peek()).equals(sList.get(i))) {
                stack.pop();
            }else {
                stack.push(sList.get(i));
            }

            }

        return stack.size() == 0 ? true:false;

        }

    public static void main(String[] args) {
        System.out.println(isValid("(([]){})"));

    }

}

【面试算法题】Java Stack 类的使用

标签:判断   har   search   相同   public   class   cto   字符串   shm   

原文地址:http://blog.51cto.com/devops2016/2310720

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!