如何检测一个字符串的尾部是否匹配另一个字符串的开头
首先明确实现逻辑:我们需要找到两个字符串中「string1的后缀」与「string2的前缀」的最长重叠长度,拼接时跳过重叠部分即可得到无重复的结果。
实现代码(JavaScript)
function mergeOverlap(str1, str2) { // 取两个字符串长度的最小值作为最大可能的重叠长度 const maxPossibleOverlap = Math.min(str1.length, str2.length); // 从最长重叠长度开始倒序校验,优先匹配最长重叠避免内容丢失 for (let overlapLen = maxPossibleOverlap; overlapLen >= 0; overlapLen--) { if (str1.endsWith(str2.slice(0, overlapLen))) { return str1 + str2.slice(overlapLen); } } // 理论上overlapLen为0时必然匹配,此处为兜底逻辑 return str1 + str2; }
测试用例
测试1:基础场景
let string1 = "Some text here"; let string2 = "text here as well"; console.log(mergeOverlap(string1, string2)); // 输出:"Some text here as well"
测试2:带特殊字符(破折号)场景
let string1 = "Some-text here"; let string2 = "text here as well"; console.log(mergeOverlap(string1, string2)); // 输出:"Some-text here as well"
测试3:完全重叠场景
let string1 = "abcdef"; let string2 = "cdef"; console.log(mergeOverlap(string1, string2)); // 输出:"abcdef"
测试4:无重叠场景
let string1 = "123"; let string2 = "456"; console.log(mergeOverlap(string1, string2)); // 输出:"123456"
内容的提问来源于stack exchange,提问作者user16897088
相关产品推荐
相关产品推荐

