路径解析_90

来源:互联网 发布:农村淘宝服务站快递 编辑:程序博客网 时间:2024/05/19 00:36

这个问题一开始用暴力解法很多地方过于繁琐,并且开始认为当前路径和之后输入的路径不能一起处理。。修修改改好多次。。思路堵塞。。后来参考了一个大佬的写法,真的历害思路清晰,可以把STL的函数用的很好。。有的函数虽然知道但没想起要用。。

90分代码如下(应该是输入上有些BUG):

#include<iostream>#include<string>using namespace std;int main(){ios::sync_with_stdio(false);int index;//指向数组下标string str_in,str_now;int p;cin>>p;cin>>str_now;//if(str_now.length()>=3) strfir = str_now.substr(str_now.length()-6,str_now.length()-4);//else strfir = "/";//Load no,input,yes;//string str_yes="";for(int i=1; i<=p; i++){cin>>str_in;if(str_in[0]!='/'){str_in = str_now + "/" + str_in + "/";}while((index = str_in.find("//")) != -1){int count = 2;while(str_in[index + count] == '/')count++;str_in.erase(index, count-1);}//index = 0;//end = str_in.length();//while(index < end)//{//if(str_in[index] == '.')//{//if(str_in[index+1] == '.')//{//}////}//else if(str_in[index] == '/')//{////}//}if(str_in.size() > 1 && str_in[str_in.size() - 1] == '/'){str_in.erase(str_in.size() - 1);}while((index = str_in.find("/./"))!=-1){str_in.erase(index+1,2);}while((index = str_in.find("/../")) != -1){if(index == 0)str_in.erase(index, 3);else{int index_temp;index_temp = str_in.rfind("/", index - 1);str_in.erase(index_temp, index - index_temp + 3);}if(str_in.size() == 0)str_in = "/";}cout<<str_in<<endl;}return 0;}


原创粉丝点击