题解 | #最长公共子序列(二)#

最长公共子序列(二)

http://www.nowcoder.com/practice/6d29638c85bb4ffd80c020fe244baf11

public:
	/**
	* longest common subsequence
	* @param s1 string字符串 the string
	* @param s2 string字符串 the string
	* @return string字符串
	*/
	string LCS(string s1, string s2) {
		vector<string> s(s2.size() + 1, "");
		for (int i = 0; i < s1.length(); i++) {
			string prev = s[0];
			for (int j = 0; j < s2.length(); j++) {
				string cur;
				if (s1[i] == s2[j]) { // 匹配字符
					cur = prev + s2[j]; // 上一个拼接 新字符
				}
				else { // 不匹配时
					if (s[j].size() > s[j + 1].size()) {
						cur = s[j];
					}
					else {
						cur = s[j + 1];
					}
				}
				prev = s[j + 1];
				s[j + 1] = cur;
			}
			//for (auto n : s) {
			//	cout << n << " ";
			//}
			//cout << i << " " << endl;
			//cout << endl;
		}
		return (s[s2.size()].size() == 0) ? "-1" : s[s2.size()];
	}
};
全部评论

相关推荐

08-27 12:02
已编辑
南京外国语学校 网络安全
再来一遍:实则劝各位不要all in华子,不要相信华为hr
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务