問題内容
与えられた絶対パスを決められたルールに従って書き直す
解答例
sample
class Solution:
def simplifyPath(self, path: str) -> str:
components = path.split("/")
st = []
for comp in components:
if comp == "" or comp == ".":
continue
if comp == "..":
if st:
st.pop()
else:
st.append(comp)
return "/" + "/".join(st)
この問題のポイント
この問題では、決められたルールに従うため複数の条件を設定しなければならず、その方法を考えるのが難しさにつながっている。
解答例では、最初から戻り値を作っていくのではなく、一度リストに保管しながら条件に照らし合わせて調整し最後に結合して戻り値とする方針で処理している。この方針により、使ってはいけない文字列の削除や親ディレクトリにさかのぼる処理を分かりやすいコードで実装することができる。