关于括号匹配的问题:
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作为参数