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

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

题意:问最后的路径是什么。

思路:说白了就是字符串的处理。".."的话就pop一个,字母的话就是push

class Solution {
	public:
		string simplifyPath(string path) {
			vector<string> ans;
			int i = 0;
			while (i < path.size()) {
				int end = i + 1;
				while (end < path.size() && path[end] != '/') end++;
				string sub = path.substr(i+1, end-i-1);
				if (sub.length() > 0) {
					if (sub == "..")  {
						if (!ans.empty())
							ans.pop_back();
					} else if (sub != ".")
						ans.push_back(sub);
					
				}
				i = end;
			}

			if (ans.empty()) return "/";
			string tmp = "";
			for (int i = 0; i < ans.size(); i++) 
				tmp += "/" + ans[i];

			return tmp;
		}
};


posted on 2017-08-04 16:17  yutingliuyl  阅读(134)  评论(0编辑  收藏  举报