我正在进行一些编码练习,并且在实现函数统一目录路径的问题上遇到了一些麻烦。
示例:
输入:/ dir1 / dir2 /../ dir3 / file.txt
输出:/dir1/dir3/file.txt
我们可以使用堆栈来解决O(n)时间/空间复杂性中的这个问题。但我们不想使用额外的空间。
我们如何用O(1)空间复杂度来解决这个问题?我正在努力寻找一个就地解决方案。
答案 0 :(得分:1)
我认为,没有写过,你可以用额外的指针购买。因为在最后,你大部分时间只做换班,你可以简单地用一个指针代表当前扫描字符串的位置,然后将其他指针作为字符串中的目标位置。关键是你在去的时候主动使用字符串。
例如:
/dir1/dir2/../dir3/file.txt
当您点击..
时,您的“当前指针”仍保留在/
的{{1}}上。
然后,您可以使用目标指针从/dir3
向后扫描..
/
。
完成目标指针后,将所有内容从当前指针(/dir2
/
)向上移动到字符串中,随时调整当前指针。
然后你冲洗并重复,直到你完成。 /dir3
路径也是如此。只需按照相同的方式使用它。
您可以在过渡期间使用目标指针来记录当前令牌的开头,但基本上您只需在将其移动到位时对字符串进行一堆扫描。
这只是一个猜测,有一个坚实的2米思考打字出来。