Longest common substring

1. 使用二维向量存当前长度。

string lcs(const string &s, const string &t)
{
	const int slen = s.length();
	const int tlen = t.length();

	vector<vector<int>> arr(slen, vector<int>(tlen, 0));
	
	string lcs;
	int maxlen = 0;

	for(int i=0; i<slen; i++)
	{
		for(int j=0; j<tlen; j++)
		{
			if(s[i] == t[j])
			{
				if(0 == i || 0 == j)
					arr[i][j] = 1;
				else
				{
					arr[i][j] = arr[i-1][j-1] + 1;
				}
				if(maxlen < arr[i][j])
				{
					maxlen = arr[i][j];
					lcs.assign(s.begin() + (i+1-maxlen), s.begin()+i+1);
				}
			}
		}
	}
	return lcs;
}

  

posted @ 2011-11-08 09:33  Sw_R  阅读(212)  评论(0编辑  收藏  举报