LeetCode_Simplify Path
Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/" , => "/home" path = "/a/./b/../../c/" , => "/c" Corner Cases: Did you consider the case where path = "/../" ? In this case , you should return "/" . Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/" . In this case , you should ignore redundant slashes and return "/home/foo" . |
class Solution { public: string simplifyPath(string path) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<string> tp; string res; int len = path.size(); if(len < 1) return string("/"); const char * str = path.c_str(); char buffer[512]; int pos = 0,num; do{ buffer[0] = '\0'; num = sscanf(str + pos,"/%[^/]/",buffer); int size = strlen(buffer); if(size == 0 && num == 0)// case :// pos++; else if( size == 1){ //case :/./ if(buffer[0] != '.') { tp.push_back(string(buffer)); } pos+= 2; }else if(size == 2 && buffer[0] =='.' && buffer[1] == '.'){//case : /../ if(!tp.empty()) tp.pop_back(); pos+=3 ; }else if(size > 1){ //case :normal tp.push_back(string(buffer)); pos = pos + 1 + size; } }while(-1 != num && pos <len ); len = tp.size(); if(len < 1) res+= '/'; for(int i = 0; i< len ; i++) { res+='/'; res+=tp[i]; } return res; } };
--------------------------------------------------------------------天道酬勤!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步