어렵게 생각했다..
한 글자씩 읽어가며 처리하려고했다.
그러다보니 경우의수도많았고 예외처리가 많아졌다.
class Solution:
def simplifyPath(self, path):
slash ='/'
target = path
results =''
while len(target) != 0:
print('target-->', target)
if len(target) ==1:
return results
idx = 1
while target[idx] == slash:
idx+=1
target = target[idx-1:] ## ///home --> /home
print('\trenew-->',target)
second = target.find('/', 1)
print('second', second)
if second == -1: ## no more slash
# either only dname is left or blank
dname = target[1:]
else:
dname = target[1:second]
print('dname' , dname)
if dname == '.' or dname == ' ': # current directory
pass
elif dname == '..': # parent directory
results = results[::-1]
rev_slash = results.find(slash)
results = results[rev_slash+1:][::-1]
else:
results = results + '/' + dname
if second == -1:
return results
else:
target = target[second:]
return results
우연히 알게되었는데. str.split()
기능을 쓰면 너무나도 간단하게 해결이 된다...
class Solution:
def simplifyPath(self, path):
words = path.split('/')
print(words)
results = []
for w in words:
print(results)
if w == '' or w=='.':
pass
elif w=='..':
if len(results) > 0:
del results[-1]
else:
results.append(w)
return '/'+ '/'.join(results)
raw = 12345
raw.index(5) =4
raw[1:].index(5) =3
index()
는 문자,리스트,튜플 모두 사용가능하나 원소가 없으면 ValueError를 던진다.find()
의 경우 문자열에서만 사용가능하며 원소가 없으면 -1
을 반환한다.