堆栈计数无法正常工作

本文关键字:工作 常工作 堆栈 | 更新日期: 2023-09-27 18:35:00

为什么我的代码没有按预期工作?尝试检查是否堆叠。计数>0,它无法正常工作

toShort("../../../z"( 正在返回"../z",但它应返回"../../../z">更新:

static String toShort(String path)
    {
        String[] elements = path.Split('/');
        String result = "";
        Stack<String> stack = new Stack<String>();
        for (int i = 0; i < elements.Length; i++)
        {
            if (stack.Count>0&&elements[i].Equals(".."))
                stack.Pop();
            else
                stack.Push(elements[i]);
        }
        List<String>list = new List<String>();
        foreach (String str in stack)
            list.Add(str); 
        list.Reverse();
        int n = list.Count;
        for (int i = 0; i < n; i++)
            if (i != n - 1)
                result += list[i] + "/";
            else
                result += list[i];
        return result;
    }

堆栈计数无法正常工作

你的程序正在做你告诉它做的事情。堆栈工作正常。第二个..会导致删除第一个..。如果在调试器中单步执行程序,则会注意到这一点。