栈的运用( Valid Parentheses)

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.

bool isValid(char* s) {

int k=0,i=0;
int p;
p=strlen(s);
int MAXSIZE=10000;//输入较大时,可能空间不足

char st;
st=(char
)malloc(MAXSIZE*sizeof(char));

if(s==NULL)
return true;
if(p%2==1)
return false;
while(s[k]){
if((s[k]=='{')||(s[k]=='[')||(s[k]=='(')){
st[i]=s[k];
++k;
++i;}
else{
switch(s[k]){
case '}':{
if(st[i-1]=='{')//注意比较的数组以及序号
--i;
else
return false;
++k;

      break;}
       case ']':{
              if(st[i-1]=='[')
                  --i;
      else 
          return false;
            ++k;
      break;}
       case ')':{
              if(st[i-1]=='(')
                  --i;
      else 
          return false;

        ++k;    
      break;}
  }
 }

}
if(i==0)
return true;
else
return false;
}

转载于:https://blog.51cto.com/13925487/2160956

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
以下是用 Java 实现的解答: ```java import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; import java.util.Stack; public class ParenthesesChecker { public static void main(String[] args) throws IOException { // 读取输入文件名 Scanner scanner = new Scanner(System.in); System.out.print("Enter input file name: "); String inputFileName = scanner.nextLine(); // 读取输入文件 File inputFile = new File(inputFileName); Scanner fileScanner = new Scanner(inputFile); // 准备输出文件 String outputFileName = "output_a3.txt"; FileWriter fileWriter = new FileWriter(outputFileName); // 逐行读取表达式并检查 long startTime = System.currentTimeMillis(); while (fileScanner.hasNextLine()) { String expression = fileScanner.nextLine(); boolean isValid = checkParentheses(expression); fileWriter.write(expression + " - " + (isValid ? "valid" : "not valid") + "\n"); } long endTime = System.currentTimeMillis(); // 关闭文件和扫描器 fileWriter.close(); fileScanner.close(); // 输出执行时间 long executionTime = endTime - startTime; System.out.println("Total execution time: " + executionTime + " ms"); } private static boolean checkParentheses(String expression) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < expression.length(); i++) { char ch = expression.charAt(i); if (ch == '(' || ch == '{' || ch == '[') { stack.push(ch); } else if (ch == ')' || ch == '}' || ch == ']') { if (stack.isEmpty()) { return false; } char top = stack.pop(); if (ch == ')' && top != '(') { return false; } else if (ch == '}' && top != '{') { return false; } else if (ch == ']' && top != '[') { return false; } } } return stack.isEmpty(); } } ``` 以上程序中,我们通过 `Scanner` 类读取用户输入的输入文件名,然后使用 `File` 类和 `Scanner` 类读取输入文件中的表达式。逐行读取后,我们调用 `checkParentheses()` 方法检查表达式是否括号匹配。如果是,我们就在输出文件中写入 "valid",否则写入 "not valid"。 `checkParentheses()` 方法中,我们使用 `Stack` 类来模拟,逐个遍历表达式中的字符。如果遇到左括号,我们就将其入。如果遇到右括号,我们就将顶的元素出,并检查它与当前右括号是否匹配。如果不匹配,我们就返回 `false`。如果表达式遍历完毕后非空,说明有左括号未被匹配,我们也返回 `false`。 最后,我们输出执行时间,即程序开始执行到输出结果之间所经过的时间。 需要注意的是,为了方便起见,我们在程序中没有对文件输入输出进行异常处理。在实际开发中,我们应该使用 `try-catch` 语句来处理可能出现的异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值