ノートタイトルleetcodeブラシ(Golang) - 71簡素化パス。

71.簡素化パス

ファイル(Unix形式)のための絶対パスを考えると、それを簡素化します。換言すれば、正規のパスに変換します。

UNIX形式のファイルシステム、期間中。現在のディレクトリを指します。さらに、二重の期間は...レベルアップしたディレクトリに移動します。詳細については、以下を参照してください。LINUX / UNIXでの相対パスVS絶対パスを

返された正規のパスは常に/スラッシュで始まらなければならず、2つのディレクトリ名の間のみ、単一のスラッシュ/がなければならないことに注意してください。最後のディレクトリ名は(存在する場合)、末尾の/で終わっていなければなりません。また、正規のパスは、絶対パスを表す最短の文字列でなければなりません。

例1:

入力:「/ホーム/」
出力:「/ホーム」
説明:ノート末尾のスラッシュが最後のディレクトリ名の後には存在しないこと。
例2:

入力:「/ ... /」
出力:「/」
説明:ルートレベルは、あなたが行くことができる最高レベルであるように、rootディレクトリから1つ上のレベルに行くには、何もしません。
例3:

入力:「/ホーム// fooの/」
出力:「/ホーム/ foo」という
説明:正規のパスでは、複数の連続するスラッシュは単一のものに置き換えられています。
例4:

入力:「/a/./b/.../.../c/」
出力:「/ C」
実施例5:

入力:「/a/.../.../b/.../c//.//」
出力:「/ C」
実施例6:

入力:「/a//b////c/d//././/...」
出力:「/ A / B / C」

問題解決のためのビデオ

func simplifyPath(path string) string {
	reg, _ := regexp.Compile("/+")
	dirs := reg.Split(path, -1)
	res := []string{}
	for _, v := range dirs {
		p := string(v)
		if p == ".." {
			if len(res) > 0 {
				res = res[:len(res)-1]
			}
        } else if p != "." && p != "" {
			res = append(res, p)
		}
	}
	str := strings.Join(res, "/")
	return "/" + str
}
公開された65元の記事 ウォンの賞賛0 ビュー360

おすすめ

転載: blog.csdn.net/weixin_44555304/article/details/104283911
おすすめ