C 實現LeetCode 71 簡化路徑

2022-09-24 22:24:12 字數 1397 閱讀 3335

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...