程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode -- Simplify Path

LeetCode -- Simplify Path

編輯:C++入門知識

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();
    	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;
    }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved