题解 | 牛群编号的回文顺序II

牛群编号的回文顺序II

https://www.nowcoder.com/practice/e887280579bb4d91934378ea359f632e

  1. 会顺序表处理回文串,就能解决

import java.util.*;

public class Solution {
    public ListNode maxPalindrome (ListNode head) {
        if (head == null || head.next == null) {
            return null;
        }

        StringBuilder sb = new StringBuilder();
        ListNode cur = head;
        while (cur != null) {
            sb.append(cur.val);
            cur = cur.next;
        }
        final char[] chars = sb.toString().toCharArray();
        int len = chars.length;
        int max = 1;
        int begin = 0;
        boolean[][] f = new boolean[len+1][len+1];
        for (int j = 1; j < len; ++j) {
            f[j][j] = true;
            for (int i = j - 1; i >= 0; --i) {
                if (chars[i] != chars[j]) {
                    continue;
                }
                f[i][j] = i == j - 1 ? true : f[i + 1][j - 1];
                if (!f[i][j]) {
                    continue;
                }
                final int ll = j - i + 1;
                if (ll > max) {
                    max = ll;
                    begin = i;
                }
            }
        }
        if (begin == 0 && max == len) {
            return null;
        }
        for (int i = 0; i < begin; ++i) {
            head = head.next;
        }
        ListNode tail = head;
        for (int i = 0; i < max - 1; ++i) {
            tail = tail.next;
        }
        tail.next = null;
        return head;
    }
}

全部评论

相关推荐

05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务