【LeetCode】C# 71、Simplify Path

Given an absolute path for a file (Unix-style), simplify it.

For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”

简化IP地址。

思路:利用string.Split来吧字符串分成字符串组,然后通过堆栈来存放有效名称。遇到/../则后退一格, /./则无视,//也无视。最后别忘了/../这种特殊情况。要返回/。

public class Solution {
    public string SimplifyPath(string path) {
        string[] arr = path.Split('/');
        Stack<string> stack = new Stack<string>();

        for (int i = 0; i < arr.Length; i++){
            if (arr[i] != ""){
                if (arr[i] == ".."){
                    if (stack.Count > 0)
                        stack.Pop();
                }
                else if (arr[i] == ".")
                {
                }
                else
                {
                    stack.Push(arr[i]);
                }
            }
        }
        StringBuilder sb = new StringBuilder();

        while (stack.Count > 0){
            sb.Insert(0, "/" + stack.Pop());
        }

        //solve corner case like "/../"
        if (sb.Length == 0)
            sb.Append("/");

        return sb.ToString();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值