Java实现 LeetCode 385 迷你语法分析器

Java实现 LeetCode 385 迷你语法分析器385 迷你语法分析器给定一个用字符串表示的整数的嵌套列表 实现一个解析它的语法分析器 列表中的每个元素只可能是整数或整数嵌套列表提示 你可以假定这些字符串都是格式良好的 字符串非空字符串不包含空格字符串只包含数字 0 9 示例 1 给定 s 324 你应该返回一个 NestedIntege 对象 其中只包含整数值 324 示例 2 给定 s

385. 迷你语法分析器

给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器。

列表中的每个元素只可能是整数或整数嵌套列表

提示:你可以假定这些字符串都是格式良好的:

示例 1:

给定 s = "324", 你应该返回一个 NestedInteger 对象,其中只包含整数值 324

示例 2:

给定 s = "[123,[456,[789]]]", 返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表: 1. 一个 integer 包含值 123 2. 一个包含两个元素的嵌套列表: i. 一个 integer 包含值 456 ii. 一个包含一个元素的嵌套列表 a. 一个 integer 包含值 789 
/ * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * public interface NestedInteger { * // Constructor initializes an empty nested list. * public NestedInteger(); * * // Constructor initializes a single integer. * public NestedInteger(int value); * * // @return true if this NestedInteger holds a single integer, rather than a nested list. * public boolean isInteger(); * * // @return the single integer that this NestedInteger holds, if it holds a single integer * // Return null if this NestedInteger holds a nested list * public Integer getInteger(); * * // Set this NestedInteger to hold a single integer. * public void setInteger(int value); * * // Set this NestedInteger to hold a nested list and adds a nested integer to it. * public void add(NestedInteger ni); * * // @return the nested list that this NestedInteger holds, if it holds a nested list * // Return null if this NestedInteger holds a single integer * public List 
   
     getList(); * } */ 
    class Solution { 
    public NestedInteger deserialize(String s) { 
    if(s.charAt(0)!='[') { 
    return new NestedInteger(Integer.valueOf(s)); } else { 
    return deserialize1(s.substring(1)); } } public NestedInteger deserialize1(String s) { 
    NestedInteger res = new NestedInteger(); //从左到右扫描 for(int i=0;i<s.length();i++) { 
    char c = s.charAt(i); if(c>='0'&&c<='9'||c=='-') { 
    int n = 0; int flag = 1; for(;i<s.length();i++) { 
    c = s.charAt(i); if(c>='0'&&c<='9') { 
    n = n*10 + c-'0'; } else if(c=='-'){ 
    flag = -1; } else { 
    i = i-1; break; } } res.add(new NestedInteger(flag*n)); } else if(c=='[') { 
    int index = i; int counter = 0; for(;i<s.length();i++) { 
    c = s.charAt(i); if(c=='[') counter++; else if(c==']') counter--; if(counter==0) { 
    res.add(deserialize1(s.substring(index+1,i))); break; } } } } return res; } } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226101.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午7:49
下一篇 2026年3月17日 上午7:50


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号