使用常量空间统一化目录路径的算法

时间:2014-09-06 20:06:40

标签: arrays algorithm in-place

我正在进行一些编码练习,并且在实现函数统一目录路径的问题上遇到了一些麻烦。

  

示例:

     
      
  • 输入:/ dir1 / dir2 /../ dir3 / file.txt

  •   
  • 输出:/dir1/dir3/file.txt

  •   

我们可以使用堆栈来解决O(n)时间/空间复杂性中的这个问题。但我们不想使用额外的空间。

我们如何用O(1)空间复杂度来解决这个问题?我正在努力寻找一个就地解决方案。

1 个答案:

答案 0 :(得分:1)

我认为,没有写过,你可以用额外的指针购买。因为在最后,你大部分时间只做换班,你可以简单地用一个指针代表当前扫描字符串的位置,然后将其他指针作为字符串中的目标位置。关键是你在去的时候主动使用字符串。

例如:

/dir1/dir2/../dir3/file.txt

当您点击..时,您的“当前指针”仍保留在/的{​​{1}}上。

然后,您可以使用目标指针从/dir3向后扫描.. /

完成目标指针后,将所有内容从当前指针(/dir2 /)向上移动到字符串中,随时调整当前指针。

然后你冲洗并重复,直到你完成。 /dir3路径也是如此。只需按照相同的方式使用它。

您可以在过渡期间使用目标指针来记录当前令牌的开头,但基本上您只需在将其移动到位时对字符串进行一堆扫描。

这只是一个猜测,有一个坚实的2米思考打字出来。