
关注
根据最长回⽂⼦序列处理字符串
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
相关推荐
03-17 15:23
未填写教育信息 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
74542次浏览 1050人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
20632次浏览 145人参与
# 京东TGT #
54436次浏览 188人参与
# 上班到公司第一件事做什么? #
41046次浏览 383人参与
# 硬件人的简历怎么写 #
257903次浏览 2901人参与
# 求职季如何保持心态不崩 #
107596次浏览 884人参与
# 找工作的破防时刻 #
2501次浏览 41人参与
# 工作时那些社死瞬间 #
26366次浏览 199人参与
# 拼多多工作体验 #
18071次浏览 153人参与
# 互联网行业现在还值得去吗 #
7620次浏览 42人参与
# 技术转行的心路历程 #
48712次浏览 665人参与
# 选完offer后,你后悔学本专业吗 #
39069次浏览 217人参与
# 你觉得技术面多长时间合理? #
87479次浏览 647人参与
# 国企和大厂硬件兄弟怎么选? #
121229次浏览 1657人参与
# 你遇到过哪些神仙同事 #
75714次浏览 668人参与
# 安利/避雷我的专业 #
67334次浏览 497人参与
# 面试经验谈 #
50792次浏览 813人参与
# 实习生应该准时下班吗 #
203947次浏览 1329人参与
# 米哈游求职进展汇总 #
323275次浏览 2224人参与
# 面试吐槽bot #
18722次浏览 109人参与
# 工作一周年分享 #
20409次浏览 113人参与