以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。
在 unix 風格的檔案系統中,乙個點(.)表示當前目錄本身;此外,兩個點 (…) 表示將目錄切換到上一級(指向父目錄);兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱:linux / unix中的絕對路徑 vs 相對路徑
請注意,返回的規範路徑必須始終以斜槓 / 開頭,並且兩個目錄名之間必須只有乙個斜槓 /。最後乙個目錄名(如果存在)不能以 / 結尾。此外,規範路徑必須是表示絕對路徑的最短字串。
示例 1:輸入:
"/home/"
輸出:
"/home"
解釋:注意,最後乙個目錄名後面沒有斜槓。
示例 2:
輸入:
"/../"
輸出:
"/"
輸出:
"/home/foo"
解釋:在規範路徑中,多個連續斜槓需要用乙個斜槓替換。
示例 4:
輸入:
"/a/./b/../../c/"
輸出:
"/c"
示例 5:
輸入:
"/a/../../b/../c//.//"
輸出:
"/c"
示例 6:
輸入:
"/a//bc/d//././/.."
輸出:
"/a/b/c"
public
class
p71_simplifypath
string[
] parr = path.
split
("/");
stack
pst =
newstack
<
>()
;for
(int i =
0;i)else
if(parr[i]
.equals
(".."))
}else}}
stringbuilder sb =
newstringbuilder()
;while
(!pst.
empty()
)if(sb.
tostring()
.equals(""
))return sb.
tostring()
;}}
思路:
用split方法將路徑分割成:a.路徑名 b..
c...
這三種型別
遇到路徑名則入棧,遇到.
則無操作繼續,遇到..
則從棧中彈出乙個路徑名
最後列印棧中剩下的路徑
Leetcode習題集 鍊錶
這裡記錄一些我刷題的思路方便之後進行複習重溫,同時也方便進行新增 p141 環形鍊錶 class solution listnode reverse listnode head return pre 使用翻轉鍊錶,判斷返回的指標與傳進的指標是否相同,時間複雜度是o n 可能 空間複雜度是o 1 cl...
leetcode習題集 54 螺旋矩陣
給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...
leetcode習題集 56 合併區間
給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。public...