C++双指针,速度超过dp | #最长公共子串#

最长公共子串

http://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac

class Solution {

public:

/**
* 双指针
*/
string LCS(string str1, string str2) {
    int first = 0, second = 0;

	int maxLen = 0;
	string res;
	while (second < str1.size()) {
		string subStr = str1.substr(first, second - first + 1);
		if (str2.find(subStr) != string::npos) {
			if (subStr.size() > maxLen) {
				maxLen = subStr.size();
				res = subStr;
			}
			second++;
		} else {
			if (second == first) {
				second ++;
				first ++;
			} else if (first < second) {
				first ++;
			}
		}
	}

	return res;
}

};

全部评论
牛客网 if (second++ == first++) 显示报错
点赞 回复 分享
发布于 2023-02-03 13:11 广东
这个方法很快 16ms
点赞 回复 分享
发布于 2023-10-29 21:43 上海

相关推荐

评论
9
收藏
分享
牛客网
牛客企业服务