日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

每天一道LeetCode-----化简路径

發布時間:2024/4/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一道LeetCode-----化简路径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Simplify Path

原題鏈接Simplify Path

要求是輸入一個路徑,由于路徑中存在”..”,”.”等特殊標記符,所以字符串表示的路徑可能不是真實路徑,返回真實的路徑


對于特殊字符的解釋如下

  • “..”表示回到上一級,如/home/a/../實際指向的路徑是/home
  • “.”可以略過,不對當前路徑做修改,如/home/a/./b實際指向的路徑是/home/a/b
  • “//”多個斜線連在一起可以簡化為一條,如/home//a/實際指向的路徑是/home/a

本題主要利用字符串的分解進行解決,對于有效路徑的內容,可以選擇棧(stack),數組(vector)存儲。掃描一遍給定字符串后將有效的路徑信息存儲在容器中,在最后重新組合成一個實際路徑

因為路徑是由”/”分隔的,所以分解字符串可以利用getline()函數,其中的某個重載如下可以接收第三個參數作為分隔符,可以傳入’/’來簡化字符串的分解

代碼如下

class Solution {public:string simplifyPath(string path) {std::stack<string> st;std::stringstream oss(path);std::string filename("");while(getline(oss, filename, '/')){if(filename == "" || filename == ".")continue;else if(filename == ".." && !st.empty())st.pop();else if(filename != "..")st.push(filename);}std::string res("");while(!st.empty()){res = "/" + st.top() + res;st.pop();}/* 如果棧是空的,那么就返回"/",否則,所有的"/"都在while循環中添加過了 */return res.empty() ? "/" : res;}};

本題主要利用getline函數簡化字符串的分解,第三個參數可以傳入分隔符,而默認換行符是分隔符

總結

以上是生活随笔為你收集整理的每天一道LeetCode-----化简路径的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。