有时,使用当前工作目录作为参考,可以缩短长的绝对路径,例如linux工具的命令行参数。
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
在这个挑战中,您应该使一个函数或程序接收两个参数:
- 绝对路径,使用linux格式(以开头
/
) - 当前目录,使用相同格式
输出是以下两者中的较短者:
- 输入1不变
- 与绝对路径引用相同文件/目录的相对路径
重点:
- 如果您的操作系统与linux兼容,则可以使用系统的当前目录而不是将其接收为输入
- 您可以假定输入仅包含字母数字字符(和路径分隔符)
- 您可以假设输入的绝对路径
/
末尾没有路径分隔符 - 您可以假设输入的当前目录
/
在末尾有路径分隔符 - 您不能假定绝对路径引用了一个现有文件,或者该文件的任何部分都是可访问的目录;但是,可以假定当前目录有效
- 您可以假设在任何一条路径附近都没有符号链接-因为我不想使用任何特殊的方式来处理符号链接
- 无需支持其中两个输入均为根目录的情况
- “当前目录”应输出为
.
(空字符串无效)
测试用例(输入1,输入2,输出):
/home/user/mydir/myfile
/home/user
mydir/myfile
/var/users/admin/secret/passwd
/var/users/joe/hack
../../admin/secret/passwd
/home/user/myfile
/tmp/someplace
/home/user/myfile
/dir1/dir2
/dir1/dir2/dir3/dir4
../..
/dir1/dir2
/dir1/dir2
.
我喜欢这种方式,但是有些人喜欢它
—
anatolyg
如果绝对路径和相对路径的长度相同,该怎么办?
—
丹尼斯,
这缺少一些关键的测试用例:
—
Nathan Merrill
/home/test /home/user/mydir/myfile /home/test
和/a/b /a/b/d/e /a/b
/
在末尾具有路径分隔符”。但是,在您的示例中,情况并非如此。