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

LeetCode -- Simplify Path

题目描述:


Given an absolute path for a file (Unix-style), simplify it.


For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"




就是对一个UNIX风格的路径简化。


思路:
1. 将路径用'/'分隔存在数组中,过滤掉值为".","/"或空的元素
2. 遍历数组的同时使用栈,如果值为"..",如果栈有元素,弹出;如果值不为".."入栈。
3. 最后对栈做一次遍历拼简化后的路径就可以了。


实现代码:





public class Solution {
    public string SimplifyPath(string path) {
        var folders = path.Split('/').Where(x=>x!="." && x != "/" && x != "").ToList();
	
    	var stack = new Stack<string>();
    	for(var i = 0;i < folders.Count; i++){
    		if(folders[i] == ".."){
    			if(stack.Count > 0){
    				stack.Pop();
    			}
    			
    		}
    		else{
    			stack.Push(folders[i]);
    		}
    	}
    	
    	var result = string.Empty;
    	while(stack.Count > 0){
    		var f = stack.Pop();
    		result = string.Format("/{0}",f) + result;
    	}
    	if(result == string.Empty){
    		return "/";
    	}
    	
    	return result;
    }
}


相关文章:

  • 老子著述
  • LeetCode -- Single Number
  • LeetCode -- Find Peak Element
  • 老子思想
  • LeetCode -- Add Two Numbers
  • LeetCode – Combination Sum
  • ArcGIS Server Java ADF 案例教程 21
  • LeetCode -- Contains Duplicate
  • HelloCpp上线服务
  • LeetCode -- Happy Number
  • SQL2005CLR函数扩展-数据导出
  • LeetCode -- Insertion Sort List
  • 【Nokia5800xm软件资源】
  • 申请证书、软件签名
  • LeetCode -- Letter Combinations of a Phone Number
  • iOS 颜色设置看我就够了
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript创建对象的四种方式
  • javascript数组去重/查找/插入/删除
  • js中的正则表达式入门
  • 从0实现一个tiny react(三)生命周期
  • 简单基于spring的redis配置(单机和集群模式)
  • 聊聊flink的BlobWriter
  • 马上搞懂 GeoJSON
  • 数据可视化之下发图实践
  • (floyd+补集) poj 3275
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)UDP基本编程步骤
  • . Flume面试题
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET CLR Hosting 简介
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net反混淆脱壳工具de4dot的使用
  • /etc/shadow字段详解
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [ABC294Ex] K-Coloring
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [IE编程] 多页面基于IE内核浏览器的代码示例
  • [JS] 常用正则表达式集(一)
  • [LeetCode系列]3元素最近和问题的O(n^2)解法
  • [LLM]大模型八股知识点(一)
  • [OpenAI]继ChatGPT后发布的Sora模型原理与体验通道
  • [PTP][1588v2] Follow_Up消息
  • [root]既然sudo 可以暂时获取root权限,那么为何还需要root这个用户呢
  • [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作...
  • [Spark][Python]DataFrame中取出有限个记录的例子
  • [SpringCloud] Feign 与 Gateway 简介
  • [Unity3d]安卓无法加载assetbundle的问题