力扣解題思路 71 簡化路徑

2021-10-24 21:46:38 字數 1017 閱讀 6059

思路:以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。

在 unix 風格的檔案系統中,乙個點(.)表示當前目錄本身;此外,兩個點 (…) 表示將目錄切換到上一級(指向父目錄);兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱:linux / unix中的絕對路徑 vs 相對路徑

請注意,返回的規範路徑必須始終以斜槓 / 開頭,並且兩個目錄名之間必須只有乙個斜槓 /。最後乙個目錄名(如果存在)不能以 / 結尾。此外,規範路徑必須是表示絕對路徑的最短字串。

輸入:"/home//foo/"

輸出:"/home/foo"

解釋:在規範路徑中,多個連續斜槓需要用乙個斜槓替換。

輸入:"/a//bc/d//././/.."

輸出:"/a/b/c"

這一題剛看到覺得很複雜,以為要用到正則匹配或者每個字母的判斷,實際上用乙個棧就可以解決:

1.定義乙個輔助棧;

2.先把字串以"/「為分隔符分割成陣列,此時陣列有"路徑」、""、"."、"…"這四種情況;

3.遍歷陣列,當s[i].equals("…")並且棧不空時pop,當!s[i].equals("") && !s[i].equals(".") && !s[i].equals("…"),即s[i]是路徑入棧;

4.棧空,返回"/",棧非空,用stringbuffer做乙個連線返回即可;

public string simplifypath

(string path)

if(stack.

isempty()

)return

"/";

stringbuffer res =

newstringbuffer()

;for

(int i =

0; i < stack.

size()

; i++

)return res.

tostring()

;}

力扣解題思路 打家劫舍

思路 題目 你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在...

力扣解題思路 素數

首先,如何判斷乙個數是否為素數呢,首先我們知道最小的素數是2,那麼我們從2開始判斷該數是否能找到被除數即可,完整 如下 public boolean isprimenum int i return true 思路 統計所有小於非負整數 n 的質數的數量。那麼這一題我們需要對每個小於n的數進行判斷一次...

從零開始刷力扣(九十七) 71 簡化路徑

給你乙個字串path,表示指向某一檔案或目錄的 unix 風格絕對路徑 以 開頭 請你將其轉化為更加簡潔的規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。任意多個連續的斜槓 即,都被視為單個斜槓...