公文括号嵌套使用顺序,公文中套用圆括号的用法

首页 > 生活 > 作者:YD1662024-05-07 11:11:23

题目描述

如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):

类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):

例如:""、"()()"、"()(()())" 都是 有效括号字符串(嵌套深度分别为 0、1、2),而 ")(" 、"(()" 都不是 有效括号字符串

给你一个 有效括号字符串 s,返回该字符串的 s 嵌套深度

示例 1:

输入:s = "(1 (2*3) ((8)/4)) 1" 输出:3 解释:数字 8 在嵌套的 3 层括号中。

示例 2:

输入:s = "(1) ((2)) (((3)))" 输出:3

提示:

解决方案

方法一:遍历

对于括号计算类题目,我们往往可以用栈来思考。

遍历字符串 s,如果遇到了一个左括号,那么就将其入栈;如果遇到了一个右括号,那么就弹出栈顶的左括号,与该右括号匹配。这一过程中的栈的大小的最大值,即为 s 的嵌套深度。

代码实现时,由于我们只需要考虑栈的大小,我们可以用一个变量 size 表示栈的大小,当遇到左括号时就将其加一,遇到右括号时就将其减一,从而表示栈中元素的变化。这一过程中 size 的最大值即为 s 的嵌套深度

代码

Python3

class Solution: def maxDepth(self, s: str) -> int: ans, size = 0, 0 for ch in s: if ch == '(': size = 1 ans = max(ans, size) elif ch == ')': size -= 1 return ans

C

class Solution { public: int maxDepth(string s) { int ans = 0, size = 0; for (char ch : s) { if (ch == '(') { size; ans = max(ans, size); } else if (ch == ')') { --size; } } return ans; } };

Java

class Solution { public int maxDepth(String s) { int ans = 0, size = 0; for (int i = 0; i < s.length(); i) { char ch = s.charAt(i); if (ch == '(') { size; ans = Math.max(ans, size); } else if (ch == ')') { --size; } } return ans; } }

Golang

func maxDepth(s string) (ans int) { size := 0 for _, ch := range s { if ch == '(' { size if size > ans { ans = size } } else if ch == ')' { size-- } } return }

C#

public class Solution { public int MaxDepth(string s) { int ans = 0, size = 0; foreach (char ch in s) { if (ch == '(') { size; ans = Math.Max(ans, size); } else if (ch == ')') { --size; } } return ans; } }

C

#define MAX(a, b) ((a) > (b) ? (a) : (b)) int maxDepth(char * s){ int ans = 0, size = 0; int n = strlen(s); for (int i = 0; i < n; i) { if (s[i] == '(') { size; ans = MAX(ans, size); } else if (s[i] == ')') { --size; } } return ans; }

JavaScript

var maxDepth = function(s) { let ans = 0, size = 0; for (let i = 0; i < s.length; i) { const ch = s[i]; if (ch === '(') { size; ans = Math.max(ans, size); } else if (ch === ')') { --size; } } return ans; };

复杂度分析

BY /

本文作者:力扣

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.