首页 > 试题广场 > 获取n维数组的最大深度
[编程题]获取n维数组的最大深度
输入参数为字符串型的n维数组,数组的每一项值为数组 或 int型数字。请实现一个函数,可以获取列表嵌套列表的最大深度为多少。

输入描述:
输入参数为字符串型的 n维数组,列表的每一项值为数组 或 int型数字。数组内的数组,每一项值,也可以是数组 或 int型数字。


输出描述:
int型数字,表示数组嵌套的深度。
示例1

输入

[[1], [2,3,4], [5,[2,3]], [7], [0,[1,2,3,4],3,5], [1,3], [3,2,4]]

输出

3

说明

n维数组的深度为3
Java解答:
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String s = input.nextLine();
        int depth = 0;
        int max = 0;
        for (int i = 0;i<s.length();i++){
            if (s.charAt(i) == '['){
                depth++;
            }else if (s.charAt(i) == ']'){
                depth--;
            }
            if (depth > max)
                max = depth;
        }
        System.out.println(max);
    }
}


发表于 2019-08-06 15:39:19 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    getline(cin, s);
    int n = s.length(), cnt=0, Max=0;
    for(int i=0;i<n;i++){
        if(s[i]=='[')
            cnt++;
        else if(s[i]==']')
            cnt--;
        Max = max(Max, cnt);
    }
    cout<<Max<<endl;
    return 0;
}

编辑于 2019-07-18 09:03:40 回复(2)
"""
括号配对
"""

if __name__ == "__main__":
    s = input()
    ans, tmp = 0, 0
    for c in s:
        if c == '[':
            tmp += 1
            ans = max(ans, tmp)
        elif c == ']':
            tmp -= 1
    print(ans)

发表于 2019-07-16 11:47:48 回复(0)
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        int count = 0, max = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '[') {
                count++;
                max = (max > count) ? max : count;
            } else if (s.charAt(i) == ']')
                count--;
        }
        System.out.println(max);
    }
}
编辑于 2019-07-15 17:01:56 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    int res=0,n=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='[')
        {
            n++;
            res=max(res,n);
        }
        else if(s[i]==']')
            n--;
    }
    cout<<res<<endl;
    return 0;
}

编辑于 2019-07-05 20:52:19 回复(0)
有括号的题目第一时间想到栈
s = raw_input()
count = []
m = 0
for i in s:
    if i == "[":
        count.append(i)
        if len(count)>m:
            m = len(count)

    elif i == "]":
        count.pop()
print m

发表于 2019-07-24 10:24:28 回复(0)

s = input()
res, count = 0,0
for i in range(len(s)):
    if s[i] == '[':
        count += 1
        res = max(res, count)
    if s[i] == ']':
        count -= 1
print(res)
发表于 2019-07-17 07:51:30 回复(0)
var str = readline();
var n = 0;
var max = 0;
for(let i =0;i<str.length;i++){
    if(str[i]=='['){
        n++;
        max = n>max?n:max;
    } else if(str[i]==']'){
        n--;
    }
}
print(max)

发表于 2019-07-13 18:43:03 回复(0)
s = input()
num,max_num = 0,0
for i in s:
    if i=='[':
        num+=1
    elif i==']':
        num-=1
    max_num = max(max_num, num)
print(max_num)

发表于 2019-07-13 09:59:59 回复(0)