学习数据结构的第二天

关于括号匹配的问题:

T20:有效的括号

class Solution {
    public boolean isValid(String s) {
        Deque<Character> dq=new LinkedList<>();
        char chSet[]=s.toCharArray();
        for(char ch1:chSet)
        {
            if(dq.isEmpty())
            {
                dq.push(ch1);
            }
            else
            {
                char ch2=dq.pop();
                if(!match(ch1,ch2))
                {
                    dq.push(ch2);
                    dq.push(ch1);
                }
            }

        }
        if(dq.isEmpty())
            return true;
        else
            return false;

    }
    public boolean match(char ch1,char ch2)
    {
        if(ch1=='[' && ch2==']')
        {
            return true;
        }
        if(ch1=='{' && ch2=='}')
        {
            return true;
        }
        if(ch1=='(' && ch2==')')
        {
            return true;
        }
        if(ch1=='}' && ch2=='{')
        {
            return true;
        }
        if(ch1==')' && ch2=='(')
        {
            return true;
        }
        if(ch1==']' && ch2=='[')
        {
            return true;
        }
        return false;
    }
}
 
(1)deque可以用来作为stack的push、pop、isEmpty操作
(2)deque的解决方法,可以用linkedList  其实queue也可以用linkedlist来实例化的。 
(3)另外一种实例化的方法,就是学习学的那里,用数组来implements这个stack,数组和linkedlist都是可以的
(4)java中 与和或 分别是 :&&和||
(5)string转charArray  可以通过 .toCharArray来实现转换的。string到这个char Array 当然 还可以通过split等函数来转换。
 
string访问里面的char,也可以用这个方法:

for(int i = 0 ; i < s.length() ; i ++){
char c = s.charAt(i);

就是用charAt的方法,告诉你在哪里位置的char

把相应的queue,也用相应的arrayQueue来实现了。

我学会的事情是:.addfirst addlast这些东西,需要调用add这个函数最好,因为他们之间的增大、缩小的逻辑保持一致最重要    

public Array(){
this(10);
}

这个的意思是说:也是调用10的构造函数,传入10作为参数

猜你喜欢

转载自www.cnblogs.com/startFrom0/p/12585587.html