首頁  >  文章  >  Java  >  Java字串回文實作的程式碼範例

Java字串回文實作的程式碼範例

不言
不言轉載
2019-03-25 11:02:062918瀏覽

這篇文章帶給大家的內容是關於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)

這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的Java視頻教程欄目!

#

以上是Java字串回文實作的程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除