加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

LeetCode 71. 简化路径 Simplify Path(C语言)

发布时间:2022-10-12 11:15:42 所属栏目:Unix 来源:
导读:  题目描述:

  给定一个文档 (Unix-style) 的完全路径,请进行路径简化。

  例如unix路径简化,

  path = "/home/", => "/home"

  path = "/a/./b/../../c/", => "/c"

  边界情况:
  题目描述:
 
  给定一个文档 (Unix-style) 的完全路径,请进行路径简化。
 
  例如unix路径简化,
 
  path = "/home/", => "/home"
 
  path = "/a/./b/../../c/", => "/c"
 
  边界情况: 题目解答: 方法1:栈
 
  每次确定两个/之间的内容,对其进行判断,只有4种情况,空、只有一个.、只有两个.、正常路径。但由于最后可能不是以/结束的,所以可以认为结束符\0和/等价。另外第三种情况判断是否可以出栈,第四种情况入栈。最后合并结果。
 
  运行时间4ms,代码如下。
 
  char* simplifyPath(char* path) {
      if(path == NULL || path[0] == NULL || path[1] == NULL)
          return path;
      char* stack[100] = { 0 };
      int len[100] = { 0 };
      int top = 0, i = 1;
      int start = 0, length = 0;
      bool flag = false;
      int pathLen = strlen(path);
  政府职能冲突的解决路径除了流程路径外 还包括_unix路径简化_unix网络编程
 
 
      while(i <= pathLen) {
          if(path[i] == '/' || path[i] == '\0') {
              length = i - start;
              if(length == 1)
                  start = i;
              else if(length == 2 && path[i - 1] == '.')
                  start = i;
              else if(length == 3 && path[i - 1] == '.' && path[i - 2] == '.') {
                  start = i;
                  if(top > 0)
                      top--;
              }
              else {
                  stack[top++] = path + start;
                  len[top - 1] = length;
                  start = i;
              }
 
          }
          i++;
      }
      char* result = (char*)malloc((pathLen + 1) * sizeof(char));
      if(top <= 0) {
          result[0] = '/';
          result[1] = '\0';
          return result;
      }
      length = 0;
      for(i = 0; i < top; i++) {
          memcpy(result + length, stack[i], len[i] * sizeof(char));
          length = length + len[i];
      }
      result[length] = '\0';
      return result;
  }
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章