根据最长回⽂⼦序列处理字符串  public String getPalindrome(String str, String strlps) { if (str == null || str.equals("")) { return ""; } char[] chas = str.toCharArray(); char[] lps = strlps.toCharArray(); char[] res = new char[2 * chas.length - lps.length]; int chasl = 0; int chasr = chas.length - 1; int lpsl = 0; int lpsr = lps.length - 1; int resl = 0; int resr = res.length - 1; int tmpl = 0; int tmpr = 0; while (lpsl <= lpsr) { tmpl = chasl; tmpr = chasr; while (chas[chasl] != lps[lpsl]) { chasl++; } while (chas[chasr] != lps[lpsr]) { chasr--; } set(res, resl, resr, chas, tmpl, chasl, chasr, tmpr); resl += chasl - tmpl + tmpr - chasr; resr -= chasl - tmpl + tmpr - chasr; res[resl++] = chas[chasl++]; res[resr--] = chas[chasr--]; lpsl++; lpsr--; } return String.valueOf(res); } public void set(char[] res, int resl, int resr, char[] chas, int ls, int le, int rs, int re) { for (int i = ls; i < le; i++) { res[resl++] = chas[i]; res[resr--] = chas[i]; } for (int i = re; i > rs; i--) { res[resl++] = chas[i]; res[resr--] = chas[i]; } }
点赞 7

相关推荐

点赞 评论 收藏
分享
牛客501015981号:前面志愿结束了,在大池子里面被其他部门捞了
点赞 评论 收藏
分享
牛客网
牛客企业服务