当前位置: 首页 > news >正文

龙华网站 建设深圳信科腾讯云免费域名申请

龙华网站 建设深圳信科,腾讯云免费域名申请,国外网站能否做百科参考资料,建设工程招标网官网题目描述 给你一个字符串 path#xff0c;表示一个 Unix 风格的绝对路径#xff0c;请你简化它并返回。 Unix 风格的绝对路径中#xff0c;.. 表示返回上一级目录#xff0c;. 表示当前目录。简化路径必须始终以斜杠 / 开头#xff0c;并且两个目录名之间必须只有一个斜…题目描述 给你一个字符串 path表示一个 Unix 风格的绝对路径请你简化它并返回。 Unix 风格的绝对路径中.. 表示返回上一级目录. 表示当前目录。简化路径必须始终以斜杠 / 开头并且两个目录名之间必须只有一个斜杠 /。最后一个目录名如果存在不能以 / 结尾。此外简化的路径必须是表示绝对路径的最短字符串。 输入格式 path一个字符串表示 Unix 风格的路径。 输出格式 返回一个字符串表示简化后的路径。 示例 示例 1 输入: path /home/ 输出: /home 解释: /home 和 /. 本质上是一样的前者是简化的路径。示例 2 输入: path /../ 输出: / 解释: /../ 将会移到根目录。方法一使用栈 解题步骤 分割路径使用 / 将路径分割成部分。处理每部分使用栈来处理每一部分。 如果是 ..则弹出栈如果栈不为空。如果是有效的路径名非空且不是 .则压入栈。 构建最终路径从栈中弹出所有元素来构建最终的路径。 完整的规范代码 def simplifyPath(path):使用栈简化 Unix 风格的绝对路径:param path: str, 输入的 Unix 风格路径:return: str, 简化后的路径stack []parts path.split(/)for part in parts:if part ..:if stack:stack.pop()elif part and part ! .:stack.append(part)return / /.join(stack)# 示例调用 print(simplifyPath(/home/)) # 输出: /home print(simplifyPath(/../)) # 输出: /算法分析 时间复杂度(O(n))其中 n 是路径的长度。空间复杂度(O(n))使用了栈来存储路径的各个部分。 方法二直接解析 解题步骤 遍历和解析直接在遍历过程中处理路径。应用路径规则同方法一直接处理和压栈。 完整的规范代码 def simplifyPath(path):直接解析路径以简化 Unix 风格的绝对路径:param path: str, 输入的 Unix 风格路径:return: str, 简化后的路径parts path.split(/)stack []for part in parts:if part ..:if stack:stack.pop()elif part and part ! .:stack.append(part)return / /.join(stack)# 示例调用 print(simplifyPath(/home/)) # 输出: /home print(simplifyPath(/../)) # 输出: /方法三递归 解题步骤 定义递归函数递归地处理路径将路径分解为头部和尾部。递归简化根据头部处理剩余的路径。 完整的规范代码 def simplifyPath(path):使用递归简化 Unix 风格的绝对路径:param path: str, 输入的 Unix 风格路径:return: str, 简化后的路径def recursive(parts):if not parts:return []part parts.pop(0)if part ..:return recursive(parts)elif part . or not part:return recursive(parts)else:return [part] recursive(parts)parts path.split(/)result recursive(parts)return / /.join(result)# 示例调用 print(simplifyPath(/home/)) # 输出: /home print(simplifyPath(/../)) # 输出: /方法四正则表达式 解题步骤 正则匹配使用正则表达式来提取所有有效的路径部分。重建路径根据提取的路径部分重建整个路径。 完整的规范代码 import redef simplifyPath(path):使用正则表达式简化 Unix 风格的绝对路径:param path: str, 输入的 Unix 风格路径:return: str, 简化后的路径parts re.findall(r[^/], path)stack []for part in parts:if part ..:if stack:stack.pop()elif part ! .:stack.append(part)return / /.join(stack)# 示例调用 print(simplifyPath(/home/)) # 输出: /home print(simplifyPath(/../)) # 输出: /方法五解析并反向处理 解题步骤 反向解析从路径末尾开始解析使用栈处理逻辑。重建路径根据处理结果重建路径。 完整的规范代码 def simplifyPath(path):反向解析 Unix 风格的绝对路径:param path: str, 输入的 Unix 风格路径:return: str, 简化后的路径parts path.split(/)stack []for part in reversed(parts):if part ..:stack.append(part)elif part and part ! .:if stack and stack[-1] ..:stack.pop()else:stack.append(part)stack.reverse()return / /.join(filter(lambda x: x ! .., stack))# 示例调用 print(simplifyPath(/home/)) # 输出: /home print(simplifyPath(/../)) # 输出: /不同算法的优劣势对比 特征方法一使用栈方法二直接解析方法三递归方法四正则表达式方法五解析并反向处理时间复杂度(O(n))(O(n))(O(n))(O(n))(O(n))空间复杂度(O(n))(O(n))(O(n))(O(n))(O(n))优势明确易懂逻辑简单同上代码更简洁递归思想简洁正则清晰易维护可处理复杂情况灵活劣势需要额外空间需要处理特殊情况可能栈溢出可能慢于其他方法实现稍复杂 应用示例 文件系统工具在开发文件系统工具如文件浏览器或命令行工具时路径的解析和简化是一个常见需求。例如在实现 cd 命令或显示当前路径时需要将用户输入的路径转换为标准化的绝对路径。 Web服务器在处理静态文件请求时需要从 URL 中解析出相对路径并将其转换为服务器上的绝对路径。使用这些方法可以防止路径遍历攻击确保服务器的安全。 通过选择适合的路径解析算法可以提高软件的性能和安全性同时提供更好的用户体验。
http://www.zqtcl.cn/news/264739/

相关文章:

  • 外贸网站 源码做的好详情页网站
  • 冀州网站制作邢台百姓网官网
  • 佛山做外贸网站方案自助网站推广系统
  • 安徽鸿顺鑫城建设集团网站小区物业管理网站开发报告
  • 有关网站建设文章常熟做网站多少钱
  • 网站流量报表江苏住房和城乡建设厅网站
  • 提供做网站公司有哪些个人建网站的费用
  • 网站后台添加表格wordpress垂直分页导航插件
  • 重庆网站建设有限公司六安市裕安区建设局网站
  • 北京产品网站建设如何做移动支付网站
  • 做同城购物网站赚钱吗设计企业网站流程
  • 网站要用什么软件做建设工程施工合同专属管辖
  • 模板网站建设制作佛山正规网站建设哪家好
  • 飞虎队网站建设网络公司起名大全
  • 如何发布自己的网站视频8首页制作代码
  • 网站开发实用案例教程普陀网站制作
  • 建一个网站需要哪些知识招远网站建设
  • 文章标题-栏目名称-网站名 dede环保网站设计建设论文
  • centos wordpress建站北京专门做网站的
  • wordpress网站的彻底清理百度网站联系方式
  • 网站建设签收单网页制作模板的作用
  • 已购买域名 如何做网站网络规划设计师通过率多少
  • 酒店网站建设需求分析wordpress iis
  • 烟台网站建设服务新钥匙网站建设
  • 帝国cms网站地图生成器行业网站建设哪家专业
  • 免费推广网站大全wordpress更改图片大小
  • 中航建设集团网站vps网站无法通过ip访问
  • 学生求职网站的需求分析怎么做江西手机版建站系统开发
  • 电商网站开发文献综述嵌入式软件开发项目
  • 网站备案怎样提交管局网站建设基本步骤