编写程序实现给定一个 linux 风格的绝对路径,要求 . 和 // 时忽略, .. 返回上一层的路径,
比如: path=”/a/./b//../c”/a/c”
使用语言不限
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
stack<string> st;
string path;
while(cin >> path) {
int len = path.size();
string temp = "";
for(int i = 0;i < len;++i) {
if('/' == path[i]) {
if(".." == temp) {
st.pop();
}
else if("." != temp && "" != temp) {
st.push(temp);
}
temp = "";
}
else {
temp += path[i];
if((len - 1) == i) {
st.push(temp);
}
}
}
stack<string> st2;
while(!st.empty()) {
st2.push(st.top());
st.pop();
}
string dest = "";
while(!st2.empty()) {
dest += "/";
dest += st2.top();
st2.pop();
}
cout << dest << endl;
}
return 0;
}