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

相关内容

热门资讯

在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...
斗金订购APP贵金属期货交易骗...   斗金订购APP的投资者往往被铺天盖地的广告宣传所诱导——注册即送现金、充值返现券等看似诱人的福利...
警惕!云启购APP违规经营,披...   "5元起投、充值返现、稳赚不赔"——这些诱人的广告语背后,可能是一个精心设计的金融陷阱。  近期...
量子淘金APP贵金属投资不合规...   "4元起投""充值返券""月入过万"——这些极具诱惑力的广告语在短视频平台、社交软件上铺天盖地。...
鑫汇智投APP贵金属商品订购骗...   鑫汇智投APP非法期货投资骗局,受害者在投资过程中根本不懂交易,也不去研究和验证这个平台是否正规...
矅光智策APP平台违规经营非法...   矅光智策APP对外宣称是“商城订购”“现货交易”,但查询其经营范围,并未显示具备开展现货期货交易...
黄金珠宝怎么选?内侧刻字都代表... 潮新闻客户端 记者 马焱 通讯员 任倩影 9月8日下午,“云游杭州 乐购金秋”——“浙城·浙放心”活...
原创 冰... 最近全球国债市场正在上演魔幻一幕: 美债、日债、欧债遭遇猛烈抛售,收益率冲到几十年新高,美国财政部都...
日韩股市开盘表现分化 上证报中国证券网讯 9月9日,日韩股市开盘表现分化,韩国综合指数开盘上涨0.26%,报6972.87...