博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
练手系列(2) 最长有效括号的长度
阅读量:4955 次
发布时间:2019-06-12

本文共 1556 字,大约阅读时间需要 5 分钟。

这是厐果网英雄会()上的一道题。

原题如下:给定只包含括号字符'('和 ')''的字符串,请找出最长的有效括号内子括号的长度。

举几个例子如下: 例如对于"( ()",最长的有效的括号中的子字符串是"()" ,有效双括号数1个,故它的长度为 2。  再比如对于字符串") () () )",其中最长的有效的括号中的子字符串是"() ()",有效双括号数2个,故它的长度为4。  再比如对于"( () () )",它的长度为6。         

换言之,便是有效双括号"()"数的两倍。

给定函数原型int longestValidParentheses(string s),请完成此函数,实现上述功能。 

  看到题目立马想到用栈来实现。Java的集合类Vector正好有一个子类Stack,所以就直接拿来用了。

过程先用图片表示一下

 

 再用代码表示:

1 import java.util.Stack; 2  3 public class Test01 { 4     public static void main(String[] args) { 5         int i = longestValidParentheses(")()(()()"); 6         System.out.println(i); 7     } 8  9     public static int longestValidParentheses(String s) {10         // 定义子括号的长度11         int j = 0;12         // 将字符串还原为字符数组13         char[] chs = s.toCharArray();14         // 创建一个Stack实例15         Stack stack = new Stack();16         // 遍历字符数组17         for (int i = 0; i < chs.length; i++) {18             // 如果这个数组元素是右括号,那么就看看栈里面是不是已经有了左括号19             if (chs[i] == ')') {20                 // 如果栈里面为空,那么丢弃这个右括号,找下一个数组元素21                 if (stack.size() > 0 && stack.peek() == null) {22                     continue;23                 } else if (stack.size() > 024                         && (stack.peek().toString()).equals("(")) {25                     // 如果栈里面有一个左括号,那么弹出此左括号,并把长度加上126                     stack.pop();27                     j++;28                 }29             } else {30                 // 如果为左括号,那么直接压入栈31                 stack.push(chs[i]);32             }33         }34         return j * 2;35     }36 }

 

        

转载于:https://www.cnblogs.com/huashui/p/3175194.html

你可能感兴趣的文章
python web框架(bottle,flask,tornado)
查看>>
文件夹下的文件内容拷贝到一个文件
查看>>
POI导出excel项目(webwork)实例
查看>>
C# 编译过程
查看>>
RabbitMQ 集群部署(linux-centos6.5)
查看>>
WPF 自定义验证规则
查看>>
Python 基础语法学习笔记
查看>>
Linux OpenGL 实践篇-4 坐标系统
查看>>
TCP与UDP的区别
查看>>
数据库主键生成方式
查看>>
CF15C. Industrial Nim
查看>>
Django增删改查--图书管理系统
查看>>
[Scrum]11.11
查看>>
autoMapper dotnetcore webapi 自动添加映射 abp
查看>>
chrome开发者工具那点事
查看>>
geant4 资料汇总
查看>>
快学UiAutomator创建第一个实例
查看>>
Python中的类方法、实例方法、静态方法
查看>>
每日一记======>Django笔记 2012.08.22
查看>>
以前积攒的一个用Java程序生成验证码的代码
查看>>