计蒜客习题(java)-括号匹配
2018-03-04 11:44
148 查看
题目要求:
蒜头君在纸上写了一个串,只包含
使用栈这个数据结构,匹配到‘(’让该左括弧的下标+1入栈,碰到‘)’则弹栈,如果栈为空,弹不出栈,则说明括号不匹配,如果能弹栈,此时就用二维数组记录左括号和右括号的位置。遍历完括号字符串后,检测栈是否为空,若为空则括号匹配,若不为空则不匹配。
AC代码import java.util.*;
class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String k=cin.nextLine();//个数
Stack<Integer> s=new Stack<Integer>();
int [][]a=new int [k.length()+3][3];
int count=0;
for(int i=0;i<k.length();i++){
if(k.charAt(i)=='('){
s.push(i+1);
}
else{
if(!s.isEmpty())
{
a[count][0]=s.pop();
a[count][1]=i+1;
count++;
}
else
{
System.out.println("No");
break;
}
}
if( i==k.length()-1){
if(s.isEmpty()){
System.out.println("Yes");
for(int j=0;j<count;j++){
System.out.println(a[j][0]+" "+a[j][1]);
}
}
else{
System.out.println("No");
}
}
}
}
}
蒜头君在纸上写了一个串,只包含
'('和
')'。一个
'('能唯一匹配一个
')',但是一个匹配的
'('必须出现在
')'之前。请判断蒜头君写的字符串能否括号完全匹配,如果能,输出配对的括号的位置(匹配的括号不可以交叉,只能嵌套)。
输入格式
一行输入一个字符串只含有'('和
')',输入的字符串长度不大于 5000050000。
输出格式
如果输入括号不能匹配,输出一行"No",否则输出一行
"Yes",接下里若干行每行输出 22 个整数,用空格隔开,表示所有匹配对的括号的位置(下标从 11 开始)。你可以按照任意顺序输出。本题答案不唯一,符合要求的答案均正确
样例输入1
(())
样例输出1
Yes 1 4 2 3
样例输入2
()()
样例输出2
Yes 1 2 3 4思路:
使用栈这个数据结构,匹配到‘(’让该左括弧的下标+1入栈,碰到‘)’则弹栈,如果栈为空,弹不出栈,则说明括号不匹配,如果能弹栈,此时就用二维数组记录左括号和右括号的位置。遍历完括号字符串后,检测栈是否为空,若为空则括号匹配,若不为空则不匹配。
AC代码import java.util.*;
class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String k=cin.nextLine();//个数
Stack<Integer> s=new Stack<Integer>();
int [][]a=new int [k.length()+3][3];
int count=0;
for(int i=0;i<k.length();i++){
if(k.charAt(i)=='('){
s.push(i+1);
}
else{
if(!s.isEmpty())
{
a[count][0]=s.pop();
a[count][1]=i+1;
count++;
}
else
{
System.out.println("No");
break;
}
}
if( i==k.length()-1){
if(s.isEmpty()){
System.out.println("Yes");
for(int j=0;j<count;j++){
System.out.println(a[j][0]+" "+a[j][1]);
}
}
else{
System.out.println("No");
}
}
}
}
}
相关文章推荐
- [土狗之路]coursera上C语言进阶习题 括号匹配
- 栈的应用之括号的匹配Java语言描述
- java括号匹配
- Java实现用栈判断括号匹配问题
- Java 正则表达式 匹配括号中的数字
- 括号是否匹配 java实现
- Java 括号匹配问题
- 算法习题46:四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())
- java实现括号匹配
- 用栈实现括号匹配检验(java)
- leetcode_20. Valid Parentheses 括号匹配问题;java String实例的声明和初始化;没用栈;
- 括号匹配算法的一种正确实现(java)
- java正则表达式匹配小括号内的内容
- Java堆栈的应用1----------堆栈的自定义实现以及括号匹配算法的Java实现
- 括号匹配栈的应用java语言实现
- java版 利用栈实现括号匹配
- ACM括号匹配问题(java实现)
- Java程序练习-括号匹配
- 判断表达式括号是否匹配java和js版本
- 计蒜客习题(java)-打印锯齿矩阵