LeetCode 1616. 分割两个字符串得到回文串
创始人
2025-05-30 09:03:03
0

【LetMeFly】1616.分割两个字符串得到回文串

力扣题目链接:https://leetcode.cn/problems/split-two-strings-to-make-palindrome/

给你两个字符串 a 和 b ,它们长度相同。请你选择一个下标,将两个字符串都在 相同的下标 分割开。由 a 可以得到两个字符串: aprefix 和 asuffix ,满足 a = aprefix + asuffix ,同理,由 b 可以得到两个字符串 bprefix 和 bsuffix ,满足 b = bprefix + bsuffix 。请你判断 aprefix + bsuffix 或者 bprefix + asuffix 能否构成回文串。

当你将一个字符串 s 分割成 sprefix 和 ssuffix 时, ssuffix 或者 sprefix 可以为空。比方说, s = "abc" 那么 "" + "abc" , "a" + "bc" , "ab" + "c" 和 "abc" + "" 都是合法分割。

如果 能构成回文字符串 ,那么请返回 true,否则返回 false 。

注意, x + y 表示连接字符串 x 和 y 。

 

示例 1:

输入:a = "x", b = "y"
输出:true
解释:如果 a 或者 b 是回文串,那么答案一定为 true ,因为你可以如下分割:
aprefix = "", asuffix = "x"
bprefix = "", bsuffix = "y"
那么 aprefix + bsuffix = "" + "y" = "y" 是回文串。

示例 2:

输入:a = "abdef", b = "fecab"
输出:true

示例 3:

输入:a = "ulacfd", b = "jizalu"
输出:true
解释:在下标为 3 处分割:
aprefix = "ula", asuffix = "cfd"
bprefix = "jiz", bsuffix = "alu"
那么 aprefix + bsuffix = "ula" + "alu" = "ulaalu" 是回文串。

 

提示:

  • 1 <= a.length, b.length <= 105
  • a.length == b.length
  • a 和 b 都只包含小写英文字母

方法一:双指针

假设我们取了aprefixa_{prefix}aprefix​和bsuffixb_{suffix}bsuffix​,并且组成了newStrnewStrnewStr,那么newStrnewStrnewStr由三部分构成:

newStr=s1+s2+s3newStr = s_1 + s_2 + s_3newStr=s1​+s2​+s3​,且s1∈aprefixs_1\in a_{prefix}s1​∈aprefix​,s3∈bsuffixs_3 \in b_{suffix}s3​∈bsuffix​,s1s_1s1​和s3s_3s3​互为回文串,s2s_2s2​自身为回文串。

举个例子:

a = “abkfkzz”, b = “xxiouba”

我们令aprefix=abkfka_{prefix} = abkfkaprefix​=abkfk,令bsuffix=bab_{suffix} = babsuffix​=ba,则newStr=abkfkbanewStr = abkfkbanewStr=abkfkba

newStrnewStrnewStr由三部分组成:abkfkba=ab+kfk+baabkfkba = ab + kfk + baabkfkba=ab+kfk+ba

其中s1=ab∈aperfixs_1 = ab \in a_{perfix}s1​=ab∈aperfix​,s3=ba∈bsuffixs_3 = ba \in b_{suffix}s3​=ba∈bsuffix​,ababab和bababa互为回文串,s2=kfks_2 = kfks2​=kfk自身为回文串。

那么思路来了:

一个指针指向aaa串的首部,另一个指针指向bbb串的尾部,当两个指针所指字符相等时,a指针后移b指针前移,直到两指针相遇或两指针所指不同为止。

  • 如果两指针相遇,则说明aperfixa_{perfix}aperfix​和bsuffixb_{suffix}bsuffix​已经互为回文,s2s_2s2​为空即可,直接返回truetruetrue
  • 如果两指针所指不同,则a指针前面的部分视为s1s_1s1​,b指针后面的部分视为s3s_3s3​(可以保证s1s_1s1​和s3s_3s3​互为回文),字符串a字符串b 从a指针到b指针的部分 视为s2s_2s2​,只需要判断s2s_2s2​自身是否为回文串即可。若是则返回true,不是则返回false

上面判断了aperfix+bsuffixa_{perfix} + b_{suffix}aperfix​+bsuffix​的情况,bperfix+asuffixb_{perfix} + a_{suffix}bperfix​+asuffix​则同理

  • 时间复杂度O(len(a))O(len(a))O(len(a))
  • 空间复杂度O(1)O(1)O(1)

AC代码

C++

class Solution {
private:bool ifSelfPalindrome(string& s, int l, int r) {  // s[l, r]while (l < r) {if (s[l++] != s[r--]) {return false;}}return true;}bool ifOk(string& a, string& b) {int la = 0, lb = b.size() - 1;while (la < lb) {if (a[la] != b[lb]) {if (ifSelfPalindrome(a, la, lb) || ifSelfPalindrome(b, la, lb)) {return true;}else {return false;}}else {la++, lb--;}}return true;  // la和lb相遇了}
public:bool checkPalindromeFormation(string& a, string& b) {return ifOk(a, b) || ifOk(b, a);}
};

Python

class Solution:def ifSelfPalindrome(self, s: str, l: int, r: int) -> bool:  # s[l, r]while l < r:if s[l] != s[r]:return Falsel += 1r -= 1return Truedef ifOk(self, a: str, b: str) -> bool:la = 0lb = len(b) - 1while la < lb:if a[la] != b[lb]:if self.ifSelfPalindrome(a, la, lb) or self.ifSelfPalindrome(b, la, lb):return Trueelse:return Falsela += 1lb -= 1return Truedef checkPalindromeFormation(self, a: str, b: str) -> bool:return self.ifOk(a, b) or self.ifOk(b, a)

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/129635845

相关内容

热门资讯

银行、消金公司助贷余额增速不得... 近日,中国证券报记者从多位业内人士处独家获悉,5月以来,多地金融监管部门对部分中小银行、消金公司下达...
朱鸿接任陈航,担任钉钉科技有限... 消费日报-今朝新闻讯 天眼查显示,6月23日,钉钉科技有限公司发生工商变更,陈航卸任法定代表人、董事...
3日累跌超20%,德创环保:公... 6月25日, 德创环保(603177.SH)公告,公司股票于2026年6月23日、6月24日和6月2...
北京发布2026年第七轮拟供商... 央广网北京6月25日消息(记者门庭婷)6月25日,北京市规划和自然资源委员会网站发布了2026年第七...
开放麦 | 启明创投胡奇:从A... “2026年,创投圈的浪潮再次翻涌:AI从技术概念走进产业深水区,硬科技创业从“小众赛道” 变成“主...
腾讯孙忠怀:在行业转身处 6月24日,2026腾讯视频年度发布在上海举行。腾讯公司副总裁、腾讯在线视频董事长孙忠怀以《在行业转...
加息,突变!美联储,重磅传来!... 美联储政策路径突生变数。 美国商务部经济分析局最新公布的数据显示,5月个人消费支出(PCE)物价指数...
6月合肥上门收金必看!5步避坑... 2026年6月,合肥黄金市场持续高位运行,不少市民翻出家里闲置的旧金饰、投资金条想变现,上门回收因为...
潮汕女富豪挂帅后加码液冷!祥鑫... 潮汕女强人,带着百亿公司加码液冷散热。 6月24日晚间,祥鑫科技(002965.SZ)公告称,公司董...
马斯克向太空要电,GobiX ... 一场关于「去哪里找电」的全球竞赛,正在朝两个方向展开。 作者|周永亮 编辑| 郑玄 「太空光伏是不是...
原料药行业陷入周期低谷 有药企... 每经记者|许立波 每经编辑|魏文艺 “过完年到现在,我们整个团队每个月都在出差,跑遍了亚非拉、欧美市...
家门口筛查白内障!永顺泽家镇暖... 大众卫生报·新湖南客户端6月25日讯(通讯员 彭雪姣)为切实解决辖区老年性白内障患者异地就医奔波、就...
终于等到!油价马上再大跌,这个... 点击添加图片描述(最多60个字) 编辑 各位车主朋友,好消息接二连三! 继6月18日油价大幅下调...
丈量出海新路 世界酒庄影响力指... 长期以来,全球酒庄评价体系由西方机构主导,且大多局限于单一酒种、单一评价维度,这一局面正逐渐被打破。...
峰瑞资本创始合伙人李丰:从资本... “2026年,创投圈的浪潮再次翻涌:AI从技术概念走进产业深水区,硬科技创业从“小众赛道” 变成“主...
原创 A... 迈向成熟,还有茁壮成长的机会。 作者 | 方璐 编辑丨于婞 来源 | 野马财经 2026年6月21日...
为企业解锁出海新通道!亚太中小... 6月24日下午,作为2026年APEC中小企业工商论坛的重要组成部分,亚太中小企业国际化合作发展论坛...
君赛生物港股IPO,增聘兴证国... 跟丰宜科技一样,正冲刺港股IPO的上海君赛生物股份有限公司(简称“君赛生物”)增聘一位整体协调人。 ...
圣邦股份明日上市:暗盘涨24%... 雷递网 雷建平 6月25日 圣邦微电子(北京)股份有限公司(简称:“圣邦股份”,股票代码:“0366...
科技“吃肉”,券商跟着“喝汤”... 当科技持续成为市场核心主线,押中硬科技项目的券商也成为被追逐的焦点。 6月24日,半导体零部件概念股...