《程序员代码面试指南》字符串拼接为回文串问题——java实现

字符串拼接为回文串问题

题目描述:

链表words中都是不同的词,如果其中str1加str2之后是回文串,
则str1的位置和str2的位置我们需要收集。
比如
words = [“bat”, “tab”, “cat”]
返回[[0, 1], [1, 0]]
words = [“abcd”, “dcba”, “lls”, “s”, “sssll”]
返回[[0, 1], [1, 0], [3, 2], [2, 4]]

题目难度:

medium

题目思路:

判断一个字符串与另一个字符串拼接是否能成为回文串,只需要三步:

  1. 将当前字符串反转,然后判断所给的字符串链表中,是否有反转的字符串。如果有,则在给定字符串后面或者前面拼接都可以;
  2. 判断给定字符串最长前缀回文串,然后非回文串部分反转,并找到是否有该反转串,若有,则直接放在头部,就能构成拼接回文串;判断给定字符串最长前缀回文串,然后非回文串部分反转,并找到是否有该反转串,若有,则直接放在头部,就能构成拼接回文串;
  3. 判断给定字符串最长后缀回文串,然后头部非回文串部分反转,并找到是否有该反转串,若有,则直接放在尾部,就能构成拼接回文串;判断给定字符串最长后缀回文串,然后头部非回文串部分反转,并找到是否有该反转串,若有,则直接放在尾部,就能构成拼接回文串。

代码实现:

在这里插入代码片

你可能感兴趣的:(左神)