博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长回文串-我的算法
阅读量:5778 次
发布时间:2019-06-18

本文共 1569 字,大约阅读时间需要 5 分钟。

hot3.png

题目

给一个字符串,求出最长的回文串。我考虑使用一个栈,通过压栈弹栈来完成。

解法

public static void main(String[] args) {        String s = "PATZJUJZTACCBCCA";        Stack
stack = new Stack<>(); for(int i=0;i
copy = new Stack<>(); copy.addAll(stack); handleSplitEven(copy,i,s); } if(i>1&&stack.peek()!=s.charAt(i)&&stack.get(i-2) == s.charAt(i)){ //次栈顶元素和即将添加的元素一样,回文串出现,分裂 Stack
copy = new Stack<>(); copy.addAll(stack); handleSplitOdd(copy,i,s); } stack.push(s.charAt(i)); } } //偶数型回文串 private static void handleSplitEven(Stack
copy, int i, String s) { copy.push(s.charAt(i)); String target = ""+copy.pop()+copy.pop(); System.out.println(target); i++; for(;i
0;i++){ if(copy.peek() == s.charAt(i)){ target = copy.pop()+target+s.charAt(i); System.out.println(target); }else{ break; } } } //奇数型回文串 private static void handleSplitOdd(Stack
copy, int i, String s) { char center = copy.pop(); String target = ""+copy.pop()+center+s.charAt(i); System.out.println(target); i++; for(;i
0;i++){ if(copy.peek() == s.charAt(i)){ target = copy.pop()+target+s.charAt(i); System.out.println(target); }else{ break; } } }

输出结果

JUJZJUJZTZJUJZTATZJUJZTACCCBCCCBCCACCBCCACC

复杂度分析

转载于:https://my.oschina.net/wuxiaofei/blog/2218921

你可能感兴趣的文章
自己写spring boot starter
查看>>
花钱删不完负面消息
查看>>
JBPM之JPdl小叙
查看>>
(step6.1.5)hdu 1233(还是畅通工程——最小生成树)
查看>>
Membership三步曲之进阶篇 - 深入剖析Provider Model
查看>>
huffman编码——原理与实现
查看>>
Linux移植随笔:终于解决Tslib的问题了【转】
查看>>
MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)
查看>>
【leetcode】Longest Common Prefix
查看>>
前端优化及相关要点总结
查看>>
Vue 列表渲染
查看>>
struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)
查看>>
25 个精美的手机网站模板
查看>>
C#反射实例应用--------获取程序集信息和通过类名创建类实例
查看>>
VC中实现文字竖排的简单方法
查看>>
会话标识未更新
查看>>
【设计模式】数据访问对象模式
查看>>
Tomcat8 配置Oracle11g数据源
查看>>
【PHP面向对象(OOP)编程入门教程】8.构造方法__construct()与析构方法__destruct()
查看>>
ThinkPHP常用配置路径
查看>>