LeetCode——1616. 分割两个字符串得到回文串

大佬,牛!!!

  • 题目:给一两个字符串a和b,然后让你从一个位置进行分割,两个字符串的前半部分与后半部分进行拼接,判断是能否得到一个回文字符串。注意,拼接出来的是两个字符串,只要有一个满足就行了。
  • 我的思路:其实这个题目我是有思路的,跟大佬的一样,只不过写的过程中没有想到拆分方法,写的有点乱,然后比较晚了,就直接看大佬的思路了。下面说一下大佬的思路。
  • 大佬思路:这个题目,有两种情况,只要一个满足就行了,因此我们先假设用a的前半部分和b的后半部分。然后再交换一下就行了,两个的结果用一个或者进行。然后双指针对两个字符串进行便利,两个一样就往中间走。但是需要注意,如果l和r的位置不一样,则需要判断是不是有一个字符串的从l到r之间满足回文,如果满足,从l到r有一个字符串满足回文,则也是满足条件的。这个判断也可以写一个方法。
  • 技巧:双指针,“或”的使用

java代码

class Solution {
    public boolean checkPalindromeFormation(String a, String b) {
        return checkConcatenation(a, b) || checkConcatenation(b, a);
    }

    public boolean checkConcatenation(String a, String b) {
        int n = a.length();
        int left = 0, right = n - 1;
        while (left < right && a.charAt(left) == b.charAt(right)) {
            left++;
            right--;
        }
        if (left >= right) {
            return true;
        }
        return checkSelfPalindrome(a, left, right) || checkSelfPalindrome(b, left, right);
    }

    public boolean checkSelfPalindrome(String a, int left, int right) {
        while (left < right && a.charAt(left) == a.charAt(right)) {
            left++;
            right--;
        }
        return left >= right;
    }
}
  • 总结:题目很有意思,这里如果不用两个方法,则会有很多重复的代码。最后附上大佬的链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值