-4

为什么我的代码没有按预期工作?尝试检查 stack.Count>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;
    }
4

1 回答 1

2

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

于 2013-10-12T15:47:34.420 回答