1. Description
把内容相同的文件的路径集中在一个集合里。输出所有有重复内容的路径集合。
2. Solution
注意对文件路径和内容的解析。
3. Code
vector<vector<string>> findDuplicate(vector<string>& paths) {
map<string,vector<string> > m;
for(int i=0;i<paths.size();i++){
string addr;
int j=0;
for(;j<paths[i].size();j++){
if(paths[i][j]==' ')
break;
else
addr+=paths[i][j];
}
j++;
string file,content;
paths[i]+=" ";
for(;j<paths[i].size();j++){
if(paths[i][j]=='('){
j++;
while(paths[i][j]!=')'){
content+=paths[i][j];
j++;
}
}
else if(paths[i][j]==' '){
m[content].push_back(addr+"/"+file);
content = "";
file="";
}
else{
file+=paths[i][j];
}
}
}
vector<vector<string>>ans;
map<string,vector<string> >::iterator it = m.begin();
for(;it!=m.end();it++){
if((it->second).size()>1)
ans.push_back(it->second);
}
return ans;
}