vector 查找公共子串

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <string>
#include <iostream>

using namespace std;
class Op_directory
{
public:
	Op_directory();
	~Op_directory();	
	void initIllegalPath();
	void findspecialPath();	
};


Op_directory::Op_directory()
{

}

Op_directory::~Op_directory()
{

}
vector<string> forbiddenDirList;
vector<string> limiteDirList;
vector<string> publicList;
void Op_directory::initIllegalPath()
{
	char *home = getenv("HOME");
	string home_path = home;

	forbiddenDirList.push_back("/etc");   
	forbiddenDirList.push_back("/lib");    
	forbiddenDirList.push_back("/var");
	forbiddenDirList.push_back("/boot");
	forbiddenDirList.push_back("/dev");
	forbiddenDirList.push_back("/proc");
	forbiddenDirList.push_back("/sys");
	forbiddenDirList.push_back("/run");
	forbiddenDirList.push_back("/usr/local/cssis");

	limiteDirList.push_back("/");
	limiteDirList.push_back("/bin");
	limiteDirList.push_back("/bin/");
	limiteDirList.push_back("/sbin");
	limiteDirList.push_back("/sbin/");
	limiteDirList.push_back("/usr");
	limiteDirList.push_back("/usr/");
	limiteDirList.push_back("/usr/bin");
	limiteDirList.push_back("/usr/bin/");
	limiteDirList.push_back("/usr/lib");
	limiteDirList.push_back("/usr/lib/");
	limiteDirList.push_back("/usr/sbin");
	limiteDirList.push_back("/usr/sbin/");
	limiteDirList.push_back("/home/");
	limiteDirList.push_back("/home");
	limiteDirList.push_back("/root");
	limiteDirList.push_back("/root/");
	limiteDirList.push_back(home_path);
	if(home_path[home_path.size() - 1] != '/')
	limiteDirList.push_back(home_path + "/");
	else
	{
		home_path[home_path.size() - 1] = '\0';
		limiteDirList.push_back(home_path);
	}
}
void Op_directory::findspecialPath()
{
	vector<string>::iterator it;
	int j = 0, i = 0;
	for(it = limiteDirList.begin(); it != limiteDirList.end(); it++)
	{
		for(j=0; j<forbiddenDirList.size(); j++)
		{
			if(strlen((char *)limiteDirList[i].c_str()) < strlen((char *)forbiddenDirList[j].c_str()))
			{
				if(NULL != strstr((char *)forbiddenDirList[j].c_str(), (char *)limiteDirList[i].c_str()))
				{
					if(0 != strcmp("/", (char *)limiteDirList[i].c_str()))
					{
						publicList.push_back(forbiddenDirList[j]);
					}
				}
				
			}		
		}
		i++;
	}
}

int main()
{
	Op_directory M;	
	M.initIllegalPath();
	M.findspecialPath();
	int i = 0;
	for(i = 0; i < publicList.size(); i++)
	{
		//printf("%s\n", publicList[i].c_str());
		cout<<publicList[i]<<endl;
	}


}


vector查找公共字符串只能在两个数组里找相同的元素,没法比较元素的公共子串。对C++不熟,记录一下,主要功能就是查找元素的公共子串

猜你喜欢

转载自blog.csdn.net/lyw13522476337/article/details/80758518