题目
给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器。
列表中的每个元素只可能是整数或整数嵌套列表
提示:你可以假定这些字符串都是格式良好的:
1、NOUNPLUS:nounplus是一个免费的语法检查网站,界面简洁流畅,并且有三种语言可供选择。将想要检查的英文复制进矩形框,即可快速找出文本中存在的语法错误,并且提供可供参考的修改后的内容。除去语法错误,nounplus也可以帮助。
字符串非空
字符串不包含空格
字符串只包含数字0-9、[、-、,、]
示例 1:给定 s = &34;。
你应该返回一个 NestedInteger 对象,其中只包含整数值 324。
示例 2:给定 s = &34;。
返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表:
2. 一个包含两个元素的嵌套列表:
i. 一个 integer 包含值 456
ii. 一个包含一个元素的嵌套列表
《懒人英语》是一款英语学习app,每天都会更新英语听力、口语、单词、阅读等材料,可以在阅读的专项训练中查看句型分析,更快速的掌握各种英语语法。9、《优点英语》《优点英语》是一款综合性的英语学习app,这款软件有着专业的。
a. 一个 integer 包含值 789
解题思路分析
在线分析语法的网站和APP还是有不少的啊,比如各大翻译平台,有道,百度,金山都有这个功能;到各大翻译平台的网站上去也是有这个功能的;
1、栈辅助;时间复杂度O(n),空间复杂度O(n)
func deserialize(s string) *NestedInteger { if s[0] != &39; { res := &NestedInteger{} num,_ := strconv.Atoi(s) res.SetInteger(num) return res } stack := make([]NestedInteger,0) str := &34; for i := 0; i < len(s); i++ { if s[i] == &39; { stack = append(stack,NestedInteger{}) } else if s[i] == &39; { if len(str) > 0 { node := NestedInteger{} num,_ := strconv.Atoi(str) node.SetInteger(num) stack[len(stack)-1].Add(node) } str = &34; if len(stack) > 1 { // 出栈 last := stack[len(stack)-1] stack = stack[:len(stack)-1] stack[len(stack)-1].Add(last) } } else if s[i] == &39; { if len(str) > 0 { node := NestedInteger{} num,英语语法分析在线网站,_ := strconv.Atoi(str) node.SetInteger(num) stack[len(stack)-1].Add(node) } str = &34; } else { str = str + string(s[i]) } } return &stack[len(stack)-1]},
总结
Medium题目,设计题目
1、《英语语法精讲》。英语语法精讲是一款为大家精讲语法的一款APP,在这款APP当中收录了众多名师为大家录制的语法课程,除此之外这款APP当中还有名师定时开启直播上课,大家可以去试试!2、《初中语法》。初中语法是一款着重。