linjiapro
BAN USER#include "stdafx.h"
#include "string"
#include "stack"
#include "iostream"
#include "stdio.h"
using namespace std;
string Pathfind(string s1, string s2){
std::stack<string> ss;
string sbuffer = "";
for(int i = 0; i< s1.length(); i++){
if(s1[i] == '/'){
if(sbuffer!= ""){
ss.push(sbuffer);
sbuffer = "";
}
} else {
sbuffer += s1[i];
}
if(i == s1.length() -1){
ss.push(sbuffer);
sbuffer = "";
}
}
for(int i= 0; i<s2.length(); i++){
if(s2[i] == '/'){
if(sbuffer == ".."){
ss.pop();
} else {
if(sbuffer != ""){
ss.push(sbuffer);
}
}
sbuffer = "";
} else {
sbuffer += s2[i];
}
if(i == s2.length() -1){
ss.push(sbuffer);
}
}
string result = "";
while(!ss.empty()){
string buffer = "/";
buffer.append(ss.top());
ss.pop();
buffer.append(result);
result = buffer;
}
return result;
}
void main(void)
{
cout << Pathfind("/usr/bin/mail", "../../../etc/xyz/../abc")<< endl;
int i;
cin>>i;
}
- linjiapro April 10, 2014