コードが期待どおりに動作しないのはなぜですか? stack.Count>0 かどうかを確認しようとしていますが、正しく機能していません
toShort("../../../z") は "../z" を返していますが、"../../../z" を返す必要があります UPDATE:
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;
}