给你一个字符串 path
,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/'
开头),请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中,一个点(.
)表示当前目录本身;此外,两个点 (..
) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//'
)都被视为单个斜杠 '/'
。 对于此问题,任何其他格式的点(例如,'...'
)均被视为文件/目录名称。
请注意,返回的 规范路径 必须遵循下述格式:
- 始终以斜杠
'/'
开头。 - 两个目录名之间必须只有一个斜杠
'/'
。 - 最后一个目录名(如果存在)不能 以
'/'
结尾。 - 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含
'.'
或'..'
)。
返回简化后得到的 规范路径 。
思路一:模拟题意
char * simplifyPath(char * path){
char *stack[100];
int size = 0;
for (char *s = strtok(path, "/"); s; s = strtok(NULL, "/")) {
if (strcmp(s, ".") == 0) {
//do nothing
} else if (strcmp(s, "..") == 0) {
//back
size = fmax(0, size-1);
} else {
stack[size++] = s;
}
}
if (size == 0) return "/";
char *res = calloc(1000, sizeof(char));
for (int i=0; i<size; ++i) {
strcat(res, "/");
strcat(res, stack[i]);
}
return res;
}
时间复杂度O(n),空间复杂度O(n)
分析:
本题将绝对路径改为规范路径,即判断是否有“."”..“这些特殊的字符,对相应字符情况进行处理,利用栈先进后出的特点,将字符输入栈中进行判断。文章来源:https://www.toymoban.com/news/detail-647415.html
总结:
本题考察对字符串的应用,考虑是否有“."”..“这些特殊的字符再处理即可得到答案文章来源地址https://www.toymoban.com/news/detail-647415.html
到了这里,关于leetcode做题笔记71的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!