You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#基于Stack栈结构解析嵌套括号字符串输出元素对应层级

层级解析问题解决方案

需求说明

现有字符串string s = "{abc,def,{pqr, {xyz}}}",规则为每出现一个{层级深度加1,每出现一个}层级深度减1,需要使用Stack栈数据结构编写C#代码,最终输出如下结果:

  • abc - Level 1
  • def - Level 1
  • pqr - Level 2
  • xyz - Level 3

原有代码问题

你的代码存在几个核心逻辑错误:

  1. 层级初始值计算错误:原始字符串第一个字符就是{,你初始level设为1,遇到{后直接加1,会导致最外层元素的层级多计算1级
  2. 栈存取逻辑错误:遇到非字母的分隔符(逗号、空格、大括号)时才应该判定当前单词是否读取完成,而不是随便遇到非push状态就弹栈
  3. 输出顺序错误:Stack是后进先出结构,直接连续Pop得到的字符顺序是倒序的,需要反转后才能得到正确的单词
  4. 没有处理分隔符过滤逻辑,会输出大量无效空内容

修正后的完整可运行代码

using System;
using System.Collections;
using System.Text;

public class HelloWorld
{
    public static void Main()
    {
        string str = "{abc,def,{pqr, {xyz}}}";
        Stack charStack = new Stack();
        int level = 0;

        foreach (char c in str)
        {
            // 遇到左括号层级加1,跳过后续逻辑
            if (c == '{')
            {
                level++;
                continue;
            }
            // 遇到右括号先输出未完成的单词,再层级减1
            else if (c == '}')
            {
                if (charStack.Count > 0)
                {
                    OutputWord(charStack, level);
                }
                level--;
                continue;
            }
            // 遇到逗号或空格,说明当前单词读取完成,输出后清空栈
            else if (c == ',' || c == ' ')
            {
                if (charStack.Count > 0)
                {
                    OutputWord(charStack, level);
                }
                continue;
            }
            // 普通字符直接入栈
            charStack.Push(c);
        }
    }

    // 封装单词输出方法
    private static void OutputWord(Stack charStack, int level)
    {
        StringBuilder sb = new StringBuilder();
        // 栈是倒序存储,依次弹出插入到字符串开头就能得到正确单词
        while (charStack.Count > 0)
        {
            sb.Insert(0, charStack.Pop());
        }
        Console.WriteLine($"{sb.ToString()} - Level {level}");
    }
}

运行输出结果

abc - Level 1
def - Level 1
pqr - Level 2
xyz - Level 3

内容的提问来源于stack exchange,提问作者kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:54:02