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月8日,路透社报道指,阿联酋最大银行第一阿布扎比银行(First Abu Dhabi B...
深圳239亿地王易主,再造万象... 2017年,世茂集团豪掷239.43亿元拿下世茂深港国际中心地块,曾规划建筑高度达700米的深圳第一...
蔚来在安庆成立新能源科技公司 ... 天眼查App显示,近日,安庆蔚来新能源科技有限公司成立,法定代表人为姚蒀,注册资本500万人民币,经...
美国牛肉商期盼峰会重启对华出口 据路透社5月8日报道,美国牛肉生产商正期待特朗普与中国于5月14日至15日的峰会推动对华出口许可恢复...
创业板首家未盈利企业,市值突破... 5月8日,大普微总市值正式突破2000亿元大关。截至午间收盘,大普微涨14.07%,报493.1元/...
招商证券:董事长霍达因工作变动... 招商证券公告,公司董事长霍达因工作变动申请辞去董事长、执行董事等全部职务,辞任自辞呈送达董事会之日生...
原创 中... 【阅读须知】本文所引用的所有信息和数据,均为作者通过查阅官方资料与网络公开数据整理、分析而成,旨在为...
原创 从... 2026年5月5日,中国商务部发布了一项具有划时代意义的专项阻断禁令,这份公告让一向倚仗长臂管辖的美...
布米普特拉北京投资基金管理有限... 美国圣路易斯联邦储备银行总裁穆萨莱姆周三发出明确信号,美联储货币政策面临的潜在风险正在发生关键转向。...
加工的秘密:超精加工设备如何做... 你知道吗? 一根头发丝的直径大约0.07毫米,也就是70微米。 超精加工设备,可切出表面,其尺寸为0...
招商证券董事长霍达因工作变动离... 北京商报讯(记者 刘宇阳 实习生 王思奕)5月8日,招商证券发布关于公司董事长离任暨推举董事代行董事...
华帝股份营收创近3年新低,37... 乐居财经李兰近日,华帝股份(002035.SZ)发布2025年年度报告。 2025年,华帝股份实现营...
大模型融资杀疯了!月之暗面狂揽... 图源:视觉中国 5月7日,据华峰资本官微消息,国内头部大模型公司月之暗面(Kimi)于近日完成新一轮...
扎根长宁二十余载,仲利国际融资... 作为总部扎根上海长宁的优质台资金融企业,仲利国际融资租赁有限公司深耕融资租赁行业二十余载,始终坚守金...
估值210亿!李彦宏又将收获一... 来源:直通IPO,文/王非 国产GPU上市潮仍然汹涌,继两家登陆A股、两家登陆H股后,这家公司正推进...
基金“盲盒”拆了 公募基金正在迎来一场让投资者“看得懂”的变革。 近日,华夏、易方达、南方、招商等12家头部及特色基金...
原创 2... 前言 十年间,中国企业在印尼镍产业链累计砸下超过140亿美元,电厂、公路、码头和全套生产线,硬生生...
原创 欧... 俄罗斯卫星通讯社5月6日报道,欧盟宣布禁止欧洲银行为含有来自不可靠供应商的关键部件的可再生能源项目提...
原创 余... 2026年5月2日,在中国理财市场扎根十三年的余额宝,终于触碰到了一个让所有人错愕的数字——7日年化...
银华基金增聘谭普景共同管理银华... 来源:新浪基金∞工作室 5月8日,银华基金管理股份有限公司发布公告称,为银华中证机器人交易型开放式指...