題目描述:
解題思路:
用到了string的find、earse、和rfind(反向查詢)。
是按照4種不一樣的情況,分別是
①:多餘的/
當有多餘的/時就可以刪去
②刪除/./的情況
③刪除/…/
這個地方涉及到,如果/…/不是在一開始就出現的話,就要反向找到第乙個/,再確定刪除的位置
④刪除末尾的/
解決**如下:
#include
#include
using
namespace std;
intmain()
if(str.
size()
==0)//注意考慮輸入為空的情況
//刪除多餘的"/"
while
((i=str.
find
("//"))
!=-1)
str.
erase
(i,count-1)
;}//刪除"/*/"
while
((i=str.
find
("/./"))
!=-1)
//處理"/**/"
while
((i=str.
find
("/../"))
!=-1)
}//刪除末尾的"/"
if(str.
size()
>
1&& str[str.
size()
-1]==
'/') str.
erase
(str.
size()
-1);
cout<
}return0;
}
201604 3 路徑解析
問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...
201604 3 路徑解析
問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...
CCF201604 3路徑解析
本題會給出一些路徑,要求對於每個路徑,給出正規化以後的形式。乙個路徑經過正規化操作後,其指定的檔案不變,但是會變成乙個不包含 和 的絕對路徑,且不包含連續多個 符號。如果乙個路徑以 結尾,那麼它代表的一定是乙個目錄,正規化操作要去掉結尾的 若這個路徑代表根目錄,則正規化操作的結果是 若路徑為空字串,...