1. 程式人生 > >CCF-201604-3-路徑解析

CCF-201604-3-路徑解析

這題一開始我是看不懂的,不過慢慢看懂後,發現原來很簡單。題目叫我們正規化每個路徑。其實就是模擬路徑的走向,最後生成絕對路徑。題目輸入的當前目錄其實對相對路徑才有用。

具體思路

  1. 當前目錄按 ‘/’ 斜杆分割成列表。判斷輸入的路徑是不是絕對路徑,是絕對路徑就得當前目錄改為根目錄。(具體就是把當前目錄清空)
  2. 把輸入的路徑按 ‘/’ 斜杆分割成列表,從左到右遍歷這個列表。
    1)遇到是空字元和‘.’就忽略(這就可以解決重複分號和單點的情況)
    2)遇到兩個點,就返回上一級,具體到操作就是刪除當前目錄的最後一個元素
    3)遇到正常字串(目錄或檔案)就在當前目錄後面加上這個元素

細節:
輸入空路徑,列印當前目錄

python程式碼

p = int(input())
curPath = input().split('/')
for i in range(p):
    curPt_cp = curPath[:]
    s, path = input(), []
    if s:
        path = s.split('/')
    if path and not path[0]:
        curPt_cp = ['']
    for e in path:
        if e and e != '.' and e != '..':
            curPt_cp.append(e)
        elif e == '..' and curPt_cp[len(curPt_cp) - 1]:
            curPt_cp.pop(len(curPt_cp) - 1)
    print('/') if len(curPt_cp) == 1 else print('/'.join(curPt_cp))