Leetcode 388:ファイルの最長の絶対パス



Leetcode 388 Longest Absolute Path File



タイトル説明

次の方法でファイルシステムを文字列に抽象化するとします。

文字列 'dir n tsubdir1 n tsubdir2 n t tfile.ext'は次のことを意味します。



あなたへ
subdir1
subdir2
file.ext
ディレクトリdirには、空のサブディレクトリsubdir1と、ファイルfile.extsubdir2を含むサブディレクトリが含まれています。

文字列 'dir n tsubdir1 n t tfile1.ext n t tsubsubdir1 n tsubdir2 n t tsubsubdir2 n t t tfile2.ext'は次のことを意味します。



あなたへ
subdir1
file1.ext
subsubdir1
subdir2
subsubdir2
file2.ext
ディレクトリdirには、2つのサブディレクトリsubdir1とsubdir2が含まれています。 Subdir1には、ファイルfile1.extと空のセカンダリサブディレクトリsubsubdir1が含まれています。 subdir2には、ファイルfile2.extを含むセカンダリサブディレクトリsubsubdir2が含まれています。

私たちは、ファイルシステム内のファイルの最長(文字数)の絶対パスを見つけることに取り組んでいます。たとえば、上記の2番目の例では、最長のパスは 'dir / subdir2 / subsubdir2 / file2.ext'であり、その長さは32(二重引用符なし)です。

上記の形式でファイルシステムを表す文字列を指定すると、ファイルシステム内のファイルの最長の絶対パスの長さを返します。システムにファイルがない場合は、0を返します。



説明:

少なくとも1つのファイル名と1つの拡張子があります。
ディレクトリまたはサブディレクトリの名前に含めることはできません。
時間計算量はO(n)である必要があります。ここで、nは入力文字列のサイズです。

パスaaaaaaaaaaaaaaaaaaaaa / sth.pngがある場合、a / aa / aaa /file1.txtは最長のパスではないことに注意してください。

ソース:LeetCode
リンク:https://leetcode-cn.com/problems/longest-absolute-file-path
著作権は控除ネットワークに帰属します。商業的転載の公式認可に連絡し、非商業的転載の出典を示してください。

問題解決のアイデア

特別な時期に年末年始に出かけない場合は、家が質問をします。

class Solution { public: int lengthLongestPath(string input) { int i=0,len=input.length() int ans=0,pre=0 string cur='' unordered_map mp while(i0)?mp[pre-1]+1:0 mp[pre]=cur.length()+p if(cur.find('.')!=string::npos) ans=max(ans,mp[pre]) return ans } }