71. 簡化路徑 —day94

前言:

作者:神的孩子在歌唱

一個算法小菜雞

大家好,我叫智

image-20250629232423583

71. 簡化路徑

給你一個字符串 path ,表示指向某一文件或目錄的 Unix 風格 絕對路徑 (以 '/' 開頭),請你將其轉化為 更加簡潔的規范路徑

在 Unix 風格的文件系統中規則如下:

  • 一個點 '.' 表示當前目錄本身。
  • 此外,兩個點 '..' 表示將目錄切換到上一級(指向父目錄)。
  • 任意多個連續的斜杠(即,'//''///')都被視為單個斜杠 '/'
  • 任何其他格式的點(例如,'...''....')均被視為有效的文件/目錄名稱。

返回的 簡化路徑 必須遵循下述格式:

  • 始終以斜杠 '/' 開頭。
  • 兩個目錄名之間必須只有一個斜杠 '/'
  • 最后一個目錄名(如果存在)不能'/' 結尾。
  • 此外,路徑僅包含從根目錄到目標文件或目錄的路徑上的目錄(即,不含 '.''..')。

返回簡化后得到的 規范路徑

示例 1:

**輸入:**path = “/home/”

輸出:“/home”

解釋:

應刪除尾隨斜杠。

示例 2:

**輸入:**path = “/home//foo/”

輸出:“/home/foo”

解釋:

多個連續的斜杠被單個斜杠替換。

示例 3:

**輸入:**path = “/home/user/Documents/…/Pictures”

輸出:“/home/user/Pictures”

解釋:

兩個點 ".." 表示上一級目錄(父目錄)。

示例 4:

**輸入:**path = “/…/”

輸出:“/”

解釋:

不可能從根目錄上升一級目錄。

示例 5:

**輸入:**path = “/…/a/…/b/c/…/d/./”

輸出:“/…/b/d”

解釋:

"..." 在這個問題中是一個合法的目錄名。

提示:

  • 1 <= path.length <= 3000
  • path 由英文字母,數字,'.''/''_' 組成。
  • path 是一個有效的 Unix 風格絕對路徑。

思路 : 通過棧進行遍歷,有效值才入棧

class Solution {// 通過棧進行遍歷,有效值才入棧// 如何找到有效值:遍歷到當前/,下一個/public String simplifyPath(String path) {// 定義棧Deque<String> stack = new ArrayDeque<>();int len=path.length();for(int i=1;i<len;i++){// 如果當前是/就跳過if(path.charAt(i)=='/') continue;// 否者就開始遍歷值,我們這里先循環到下一個/的位置int j=i+1;while(j<len&&path.charAt(j)!='/') j++;// 通過substring切割獲取值String item=path.substring(i,j);// 將i放入到j的位置i=j;// 如果是..就出棧if(item.equals("..")){// 如果不為空if(!stack.isEmpty()){stack.pollLast();}}// 否則如果item不為.else if(!item.equals(".")){stack.addLast(item);}}StringBuilder s=new StringBuilder();while(!stack.isEmpty()){s.append('/'+stack.pollFirst());}return s.length()==0?"/":s.toString();}
}

本人csdn博客:https://blog.csdn.net/weixin_46654114

轉載說明:跟我說明,務必注明來源,附帶本人博客連接。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/86735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86735.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux系統編程 | 互斥鎖

1、什么是互斥鎖 如果信號量的值最多為 1&#xff0c;那實際上相當于一個共享資源在任意時刻最多只能有一個線程在訪問&#xff0c;這樣的邏輯被稱為“互斥”。這時&#xff0c;有一種更加方便和語義更加準確的工具來滿足這種邏輯&#xff0c;他就是互斥鎖。 “鎖”是一種非常形…

數據文件寫入技術詳解:從CSV到Excel的ETL流程優化

文章大綱&#xff1a; 引言&#xff1a;數據文件寫入在ETL流程中的重要性 在現代數據處理中&#xff0c;ETL&#xff08;提取、轉換、加載&#xff09;流程是數據分析和業務決策的核心環節&#xff0c;而數據文件寫入作為ETL的最后一步&#xff0c;扮演著至關重要的角色。它不…

在Cline中使用Gemini CLI,圖形化界面操作:從命令行到可視化操作的全新體驗,爽炸天!

在軟件開發的進程中&#xff0c;命令行工具雖功能強大&#xff0c;但對部分開發者而言&#xff0c;圖形化界面的直觀與便捷性有著獨特魅力。此前&#xff0c;Cline 新版本集成 Gemini CLI 的消息在開發者社群引發熱議&#xff0c;尤其對于偏好圖形界面的開發者來說&#xff0c;…

正交視圖三維重建 筆記 2d線到3d線

這種代碼怎么寫好&#xff0c;x1tx1 x2tx2 x1x2在一條線上tx2和tx1在一條線上輸出x1 y1 ty1&#xff0c;x2 y2 ty2 線過的點 的集合 俯視圖找深度 測試一下 目標 四條線變一條線 復雜度賊大跑起來賊慢 加了16000條 去重 for (const [x1, y1, x2, y2, lineId, type] of front…

【耳機】IEM 前腔 后腔 泄壓孔 -> 調音紙對頻響曲線的影響

一、后腔 1.曲線說明 綠色&#xff1a;無調音紙 紅色&#xff1a;使用Y3 粉色&#xff1a;使用Y6 2.結論 后腔是負責微調的&#xff0c;阻尼大小和低頻升降成 反比。 阻 大 -> 低頻 降低 阻 小 -> 低頻 升高 二、前腔 1.曲線說明 紅色&#xff1a;無調音紙 黃色&am…

信息安全與網絡安全---引言

僅供參考 文章目錄 一、計算機安全1.1 CIA三元組1.2 影響等級1.3 計算機安全的挑戰 二、OSI安全體系結構2.1 安全攻擊2.2 安全服務2.3 安全機制 三、基本安全設計準則四、攻擊面和攻擊樹&#xff08;重點&#xff09;4.1 攻擊面4.2 攻擊樹 五、習題與答案 一、計算機安全 &…

C# VB.NET取字符串中全角字符數量和半角字符數量

C# VB.NET中Tuple輕量級數據結構和固定長度數組-CSDN博客 https://blog.csdn.net/xiaoyao961/article/details/148872196 下面提供了三種統計字符串中全角和半角字符數量的方法&#xff0c;并進行了性能對比。 性能對比&#xff08;處理 100 萬次 "Hello&#xff0c;世界…

CC++公司面試題[個人總結,持續更新中]

嵌入式初級面試題 姓名: 日期: 開始時間: (答題時間60分鐘,答題過程中請不要上網查詢資料,不可帶走答卷) 1:設float a=2,b=4,c=3;,以下C語言表達式與代數式(a+b)+c計算結果不一致的是( )[3分] A.(a+b)c/2 B. (1/2)*(a+b)c C. (a+b)c*1/2 D.c/2(a+b) 2:為了向二進制文件尾部…

Qt QGraphics簡述及例程 - QGraphicsView、QGraphicsScene和QGraphicsItem

Qt QGraphics簡述及例程 引言一、簡單例程二、關于坐標系問題 引言 QGraphics*是Qt框架中&#xff0c;主要用于處理2D圖形項的顯示、交互和管理的模塊&#xff0c;包括QGraphicsView、QGraphicsScene和QGraphicsItem。提供了一套高效的場景-視圖架構&#xff0c;適合開發復雜的…

代碼隨想錄打卡第一天

文章講解&#xff1a;代碼隨想錄 視頻講解&#xff1a;手把手帶你撕出正確的二分法 | 二分查找法 | 二分搜索法 | LeetCode&#xff1a;704. 二分查找_嗶哩嗶哩_bilibili class Solution { public:int search(vector<int>& nums, int target) {int left0;//左邊界int…

時序數據庫全面解析與對比

文章目錄 1. 時序數據庫概述1.1 時序數據特點1.2 時序數據庫核心功能 2. 主流時序數據庫對比2.1 InfluxDB2.2 Prometheus2.3 TimescaleDB2.4 OpenTSDB2.5 TDengine 3. 全方位對比3.1 功能對比3.2 性能對比3.3 適用場景對比3.4 社區與生態 4. 選型建議4.1 根據數據規模選擇4.2 根…

【STM32CubeMX】ST官網MCU固件庫下載及安裝

用STM32CubeMX自帶的Updater更新固件包會遇到各種幺蛾子&#xff08;如下圖所示&#xff09;&#xff0c;所以干脆自己下載固件包&#xff0c;快速升級固件。 1. ST官網搜索你需要的MCU型號&#xff0c;并選擇需要的固件版本&#xff0c;我這里是H7的MCU所以就找H7&#xff08;…

青少年編程與數學 01-012 通用應用軟件簡介 13 網上學習資源

青少年編程與數學 01-012 通用應用軟件簡介 13 網上學習資源 一、什么是網上學習資源&#xff08;一&#xff09;網上學習資源的基本定義&#xff08;二&#xff09;網上學習資源的工作原理&#xff08;三&#xff09;網上學習資源的類型 二、網上學習資源的重要意義&#xff0…

Python Selenium 忽略證書錯誤

文章目錄 Python Selenium 忽略證書錯誤和忽略&#x1f527; **一、忽略 SSL 證書錯誤**1. **基礎配置&#xff08;適用于 Chrome/Firefox&#xff09;**2. **高級場景&#xff1a;指定證書指紋**3. **瀏覽器兼容方案** &#x1f507; **二、隱藏 DevTools 監聽提示**1. **禁用…

YOLOv8模型在RDK5開發板上的部署指南:.pt到.bin轉換與優化實踐

以下是針對在RDK5開發板(基于NVIDIA Jetson Orin平臺)部署YOLOv8模型的詳細技術指南,涵蓋從模型轉換、優化到部署的全流程: YOLOv8模型在RDK5開發板上的部署指南:.pt到.bin轉換與優化實踐 ——基于TensorRT的高性能嵌入式部署方案 第一章:技術背景與核心概念 1.1 RDK5開…

內網橫向-工作流

一、信息收集階段 操作 工具 / 命令 說明 系統基礎信息采集 systeminfo、whoami /user 查看系統版本、用戶 SID 等 域內用戶 / 組查詢 net user /domain、net group "domain admins" /domain 列出域用戶及管理員組 域控及網絡結構探測 nltest /dsgetdc、ip…

個人日記本小程序開發方案(使用IntelliJ IDEA)

個人日記本小程序開發方案(使用IntelliJ IDEA) 一、項目創建與環境配置 1. 新建項目 打開IDEA → New Project → JavaFX選擇JDK 11+版本添加必要依賴:<!-- pom.xml --> <dependencies><dependency><groupId

react快速開始項目模板

代碼倉庫 gitee 創建項目 首先保證安裝了node, 然后使用vite創建項目 vite npm create vite react-learn cd react-learn npm i 目錄結構 一個完整的前端項目需要: 狀態管理 在全局維護共有的狀態(數據), 讓頁面組件之間共享數據, 我們使用pinia路由 路由讓頁面之間可以…

scrapy+django+pyecharts+mysql 實現西安游客行為分析系統大屏_用戶畫像_空間分析_路線智能推薦

項目地址 link 此處展示部分結果 思路 描述性統計 可視化大屏 用戶畫像&#xff08;聚類&#xff0c;情感分析&#xff09; 空間分析

AC-DC-AC間接變頻電源設計方案(工頻50Hz→20KHz)

AC-DC-AC間接變頻電源設計方案(工頻50Hz→20KHz) 一、方案分析與選擇 1. 可選電路結構分析 方案1:二極管整流+Boost PFC+全橋逆變 優點: 輸入功率因數高(>0.99)直流電壓穩定可控輸出波形質量好缺點: 電路復雜度較高成本相對較高方案2:晶閘管相控整流+電容濾波+半…