given an absolute path for a file (unix-style), simplify it.
for example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
click to show corner cases.
corner cases:
這道題讓簡化給定的路徑,光根據題目中給的那乙個例子還真不太好總結出規律,應該再加上兩個例子 path = "/a/./b/../c/", => "/a/c"和path = "/a/./b/c/", => "/a/b/c", 這樣我們就可以知道中間是"."的情況直接去掉,是".."時刪掉它上面挨著的乙個路徑,而下面的邊界條件給的一些情況中可以得知,如果是空的話返回"/",如果有多個"/"只保留乙個。那麼我們可以把路徑看做是由乙個或多個"/"分割開的眾多子字串,把它們分別提取出來一一處理即可,**如下:
c++ 解法一:
class solution else if (s != ".")
}if (v.empty()) return "/";
string res;
for (int i = 0; i < v.size(); ++i)
return res;}};
還有一種解法是利用了c語言中的函式strtok來分隔字串,但是需要把string和char*型別相互轉換,轉換方法請猛戳這裡。除了這塊不同,其餘的思想和上面那種解法相同,**如下:
c 解法一:
class solutiowww.cppcns.comn else if (p != ".")
pch = strtok(null, "/");
}if (v.empty()) return "/";
string res;
for (int i = 0; i < v.size(); ++i)
return res;}};
c++中也有專門處理字串的機制,我們可以使用stringstream來分隔字串,然後對每一段分別處理,思路和上面的方法相似,參見**如下:
c++ 解法二:
class solution
for (string s : v) res += "/" + s;
www.cppcns.com return res.empty() ? "/" : res;}};
j**a 解法二:
public class solution else if (!t.equals(".") && !t.equals("") && !t.equals(".."))
}list程式設計客棧; list = new arraylist(s);
return "/" + string.join("/", list);}}
LeetCode 71 簡化路徑
題目鏈結 題目描述 給定乙個文件 unix style 的完全路徑,請進行路徑簡化。例如,path home home path a b c c 邊界情況 解決方法 2 如果是 則需要出棧 如果棧為空則不操作 因為這是返回上級目錄的符號 3 其他情況壓棧 class solution else p....
leetcode71 簡化路徑
給定乙個文件 unix style 的完全路徑,請進行路徑簡化。例如,path home home path a b c c 邊界情況 你是否考慮了 路徑 的情況?在這種情況下,你需返回 此外,路徑中也可能包含多個斜槓 如 home foo 在這種情況下,你可忽略多餘的斜槓,返回 home foo ...
leetcode 71 簡化路徑
與leetcode 65一樣,感覺這種題實在沒有意義,不給出明確的說明,只能靠自己邊提交邊自己悟 其實本題就是當 時,其前面的路徑簡化,也就是刪除,而對於 則直接刪除即可,但像 home home 是不動的 最簡單的方法就是根據 進行分段,就是將夾在兩個 中的字串提取出來判斷是不是.或.std st...