一、題目
每當(dāng)用戶執(zhí)行變更文件夾操作時(shí),LeetCode 文件系統(tǒng)都會(huì)保存一條日志記錄。
下面給出對(duì)變更操作的說明:
"../":移動(dòng)到當(dāng)前文件夾的父文件夾。如果已經(jīng)在主文件夾下,則 繼續(xù)停留在當(dāng)前文件夾 。
"./":繼續(xù)停留在當(dāng)前文件夾。
"x/":移動(dòng)到名為 x 的子文件夾中。題目數(shù)據(jù) 保證總是存在文件夾x。
給你一個(gè)字符串列表 logs ,其中 logs[i] 是用戶在第i步執(zhí)行的操作。
文件系統(tǒng)啟動(dòng)時(shí)位于主文件夾,然后執(zhí)行 logs 中的操作。
執(zhí)行完所有變更文件夾操作后,請(qǐng)你找出 返回主文件夾所需的最小步數(shù) 。
二、示例
2.1> 示例 1:

【輸入】logs = ["d1/","d2/","../","d21/","./"]
【輸出】2
【解釋】執(zhí)行 "../" 操作變更文件夾 2 次,即可回到主文件夾
2.2> 示例 2:

【輸入】logs = ["d1/","d2/","./","d3/","../","d31/"]
【輸出】3
2.3> 示例 3:
【輸入】logs = ["d1/","../","../","../"]
【輸出】0
提示:
-
1<= logs.length <=10^3 -
2<= logs[i].length <=10 -
logs[i]包含小寫英文字母,數(shù)字,'.'和'/' -
logs[i]符合語句中描述的格式 - 文件夾名稱由小寫英文字母和數(shù)字組成
三、解題思路
根據(jù)本題題意模擬操作計(jì)算即可,詳情如下圖所示:

- 當(dāng)logs[i]等于“../”時(shí),表示后退一步,即:
step--,此時(shí)需要注意,step不要被減成負(fù)數(shù)。- 當(dāng)logs[i]等于“./”時(shí),
step值不變;- 其他情況,
step++;
四、代碼實(shí)現(xiàn)
class Solution {
public int minOperations(String[] logs) {
int step = 0;
for (int i = 0; i < logs.length; i++) {
if (logs[i].equals("../")) step = (step == 0) ? step : step - 1;
else if (!logs[i].equals("./")) step++;
}
return step;
}
}

1.png
今天的文章內(nèi)容就這些了:
寫作不易,筆者幾個(gè)小時(shí)甚至數(shù)天完成的一篇文章,只愿換來您幾秒鐘的 點(diǎn)贊 & 分享 。
更多技術(shù)干貨,歡迎大家關(guān)注公眾號(hào)“爪哇繆斯” ~ \(o)/ ~ 「干貨分享,每天更新」