肇庆网站制作软件,网站制作 网站,做外汇应该看哪一家网站,外包做网站公司有哪些括号匹配问题
链接#xff1a;https://ac.nowcoder.com/acm/contest/3530/E 来源#xff1a;牛客网
众所周知#xff0c;佳爷是集训队最强#xff0c;他经常喜欢鄙视集训队最菜的PC#xff0c;这天他又来了#xff0c;他丢给PC一道题目#xff1a;
给你一个字符串https://ac.nowcoder.com/acm/contest/3530/E 来源牛客网
众所周知佳爷是集训队最强他经常喜欢鄙视集训队最菜的PC这天他又来了他丢给PC一道题目
给你一个字符串该字符串只包含符号 ‘(’ 和 ‘)’, 我们称那些左右括号可以一一对应的括号字符串为完美字符串
比如()()(), “((()))”, “((()))()()”, 都是完美字符串
而((()), “()(”, “((()))()(” 不是完美字符串。
这么难的题目PC当然是不会写的但他又不想被佳爷鄙视所以他找到了你聪明的ACMer啊请你帮PC解出这题把
输入描述: 第一行一个整数n代表字符串的长度 n 1 n 1e5 第二行一串字符串s只包含字符 ‘(’ , ‘)’。 输出描述: 如果该字符串是完美字符串就输出YES。否则输出NO 示例1 输入 4 (()) 输出 YES import java.util.Scanner;
import java.util.Stack;public class Main {//https://ac.nowcoder.com/acm/contest/3530/E//判断给定的字符串是不是完美括号public static void main(String[] args) {Scanner scnew Scanner(System.in);int nsc.nextInt();String inputsc.next();//将字符串转换为字符数组char []charsinput.toCharArray();//用栈来进行匹配StackString stacknew Stack();//i用来计数如果for循环结束i的值和数组的长度相同则YES反之NOint i;for ( i0;ichars.length;i){if (chars[i]() {stack.push(chars[i] );}else{if (stack.empty()){break; }else{stack.pop();}}}if (ichars.lengthstack.empty()){System.out.println(YES);}else {System.out.println(NO);}}
}总结 1.应用栈进行匹配是最直接的如果位左括号(就入栈如果为右括号)就出栈需要注意的是在右括号出栈的时候需要判断栈是否为空比如输入序列为此时就需要注意了。 2.最后用if判断输出YES还是NO时候需要判断计数变量i的值是否等于字符数组的长度还要判断栈是否为空因为可能存 这种情况也是需要注意的。