CSP 201604 3路徑解析

2021-10-05 02:00:16 字數 1936 閱讀 7131

問題描述

輸入格式

第一行包含乙個整數 p,表示需要進行正規化操作的路徑個數。

第二行包含乙個字串,表示當前目錄。

以下 p 行,每行包含乙個字串,表示需要進行正規化操作的路徑。

輸出格式

共 p 行,每行乙個字串,表示經過正規化操作後的路徑,順序與輸入對應。

樣例輸入

7

/d2/d3

/d2/d4/f1

…/d4/f1

/d1/./f1

/d1///f1

/d1/

////d1/…/…/d2

樣例輸出

/d2/d4/f1

/d2/d4/f1

/d1/f1

/d1/f1

/d1/

/d2

評測用例規模與約定

1 ≤ p ≤ 10。

檔案和目錄的名字只包含大小寫字母、數字和小數點 .、減號 - 以及下劃線 _。

不會有檔案或目錄的名字是 . 或 … ,它們具有題目描述中給出的特殊含義。

輸入的所有路徑每個長度不超過 1000 個字元。

輸入的當前目錄保證是乙個經過正規化操作後的路徑。

對於前 30% 的測試用例,需要正規化的路徑的組成部分不包含 . 和 … 。

對於前 60% 的測試用例,需要正規化的路徑都是絕對路徑。

題意:

將所有的路徑正規化。

分析:通過讀題可以明確以下兩個概念:

絕對路徑:以 / 符號開頭,表示從根目錄開始構建的路徑。

相對路徑:不以 / 符號開頭,表示從當前目錄開始構建的路徑。

對於這兩類情況,第一步應該判斷是不是相對路徑,即判斷第乙個字元是不是"/"。如果是相對路徑,則把當前路徑加在相對路徑頭部,就形成了乙個絕對路徑。緊接著是對絕對路徑的處理,只需要主義以下四個方面:

存在連續多個"/「需要只輸出乙個

結尾的」/「需要刪除

出現」.「時需要刪除;

出現」…「時,如果在它之前沒有其他項了,和處理」."一樣刪除即可。否則刪除它和它前面一項。

對於每一條需要正規化的路徑,使用乙個vector儲存,只儲存每一項路徑而不儲存"/"。輸出時再在每一項之前先輸出"/"。

**如下:

#include

#include

#include

#include

using

namespace std;

intmain()

else

continue;}

else}}

for(

int i =

0; i < p; i++

)else

s[i]

.erase

(s[i]

.begin()

+ j);}

else

if(s[i]

[j]==

".")

s[i]

.erase

(s[i]

.begin()

+ j)

;else

j++;}

}for

(int i =

0; i < p; i++)}

cout << endl;

}return0;

}

CSP 201604 3 路徑解析

試題編號 201604 3 試題名稱 路徑解析 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案...

CSP201604 3路徑解析

給出一系列檔案路徑,輸出正規化後的路徑。有分析可知,給出的路徑只有兩種形式,一是絕對路徑 以 開頭 二是相對路徑 以 開頭 對於相對路徑的處理,可以將它與當前目錄連在一起,變成絕對路徑後再正規化,根據分析得出將乙個路徑 絕對路徑 正規化要考慮到以下四點 路徑中是否出現 路徑中是否出現 路徑中是否出現...

csp 201604 3 路徑解析

問題描述 在作業系統中,資料通常以檔案的形式儲存在檔案系統中。檔案系統一般採用層次化的組織形式,由目錄 或者資料夾 和檔案構成,形成一棵樹的形狀。檔案有內容,用於儲存資料。目錄是容器,可包含檔案或其他目錄。同乙個目錄下的所有檔案和目錄的名字各不相同,不同目錄下可以有名字相同的檔案或目錄。為了指定檔案...