[LC] 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"


クラスソリューション:
     DEF simplifyPath(自己、パス:STR) - > STR:
         インポート
        LST = re.split(' / + ' 、パス)
        のスタック = []
         のための項目LST:
             もしアイテム== ' .. ' もしスタック:
                    stack.pop()
            のelifのアイテムアイテムを=!" " 
                stack.append(アイテム)
            引き続き
        RES = ' / ' + ' / ' .join(スタック)
         の戻りRES
        
            

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/11785568.html