链接:https://leetcode.cn/problems/simplify-path/solution/-by-xun-ge-v-sedg/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解题思路
我们首先将给定的字符串 path 根据 / 分割成一个由若干字符串组成的列表,记为 names。根据题目中规定的「规范路径的下述格式」,names 中包含的字符串只能为以下几种:
具体实现
可以使用strtok库函数 根据 / 分割path成若干字符串
strtok函数的基本使用方法:
可以使用strcmp库函数 对names 中包含的字符串进行分析判断
strcmp()函数返回一个int或整数类型。 我们可以得到以下三种返回值类型。
- char * simplifyPath(char * path){
- char *stack[100];
- int size = 0;
- for(char *s = strtok(path, "/"); s; s = strtok(NULL, "/")){
- if (strcmp(s, ".") == 0){ //第二种情况不处理
- }else if(strcmp(s, "..") == 0){ //第三种情况回退并保证始终在根目录
- 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;
- }
-
-
-
- 作者:xun-ge-v
- 链接:https://leetcode.cn/problems/simplify-path/solution/-by-xun-ge-v-sedg/
- 来源:力扣(LeetCode)
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。