为什么我的代码没有按预期工作? 试图检查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;
}
答案 0 :(得分:2)
你的程序完全按照你的要求去做。堆栈工作正常。第二个..
会导致第一个..
被删除。如果您在调试器中逐步执行该程序,您会注意到这一点。