您好,欢迎访问一九零五行业门户网

Java字符串回文实现的代码示例

本篇文章给大家带来的内容是关于java字符串回文实现的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
字符串回文
如何判断一个字符串是否是回文字符串的问题,我想你应该听过,我们今天的思题目就是基于这个
问题的改造版本。如果字符串是通过单链表来存储的,那该如何来判断是一个回文串呢?你有什么
好的解决思路呢?相应的时间空间复杂度又是多少呢?
思路:
1.使用快慢指针来找到中间节点
2.在找中间节点的同时复制一份反序的从开头到中间节点的链表prev
3.比较prev链表和slow链表是否相同
代码:
package me.study.algorithm;/** * public class linknode { * *     char val; * *     linknode next; * *     public linknode() { *     } * *     public linknode(char val) { *         this.val = val; *     } * } */public class stringback {    public boolean clac(linknode head) {        if (head.next == null && head.next == null){            return true;        }            linknode prev = null;            linknode slow = head;            linknode fast = head;            while (fast != null && fast.next != null) {                fast = fast.next.next;                linknode next = slow.next;                slow.next = prev;                prev = slow;                slow = next;            }            if (fast != null) {                slow = slow.next;            }            while (slow != null) {                if (slow.val != prev.val) {                    return false;                }                slow = slow.next;                prev = prev.next;            }            return true;    }}
最好时间复杂度:
最好的情况就是单个字符或者空字符串,时间复杂度为o(1)
最坏时间复杂度:
查找中间节点时间复杂度n/2
比较大小时间复杂度直到最后才比较出是否相等所以为n/2
相加起来最后的时间复杂度为o(n)
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注的java视频教程栏目!
以上就是java字符串回文实现的代码示例的详细内容。
其它类似信息

推荐信息