回文數相關

2021-09-29 12:28:03 字數 1117 閱讀 5298

例子:

輸入: 121

輸出: true

輸入: -121

輸出: false

bool ispalindrome

(int x)

int r =0;

while

(x > r)

return x == r || x == r/10;

//12=123/10

}

解析:快慢指標找到鍊錶的中點。12321,slow指到3,讓fast指向slow.next為2.反轉後半部分鍊錶。再進行依次比對

public

boolean

ispalindrome

(listnode head)

listnode dummynode =

newlistnode(-

1); dummynode.next = head;

listnode slow = dummynode;

listnode fast = dummynode;

// 慢指標一次走一步,快指標一次走兩步,當快指標走到終點,慢指標剛好處於中點位置

while

(fast != null && fast.next != null)

// fast指標置於下半段鍊錶的起點

fast = slow.next;

// 斷開前後兩個鍊錶

slow.next = null;

// slow指標置於前半段鍊錶的起點

slow = dummynode.next;

// 反轉後半段鍊錶

listnode pre = null;

// 儲存指標前一節點的資訊,用於反轉

while

(fast != null)

// 前後半鍊錶逐一比較,當鍊表長度為奇數時前半段鍊錶長度比後半段多1,所以以後半段為準

while

(pre != null)

slow = slow.next;

pre = pre.next;

}return

true

;}

回文數 第N個回文數

判斷回文數還是不難,如果能轉為字串就更簡單了。如果是求第n個回文數呢。12321是乙個回文數,這裡先考慮一半的情況。回文數的個數其實是有規律的。如 1位回文數 9個 2位回文數 9個 3位回文數 90個 4位回文數 90個 5位回文數 900個 6位回文數 900個 我們看到9 90 900,是不是...

回文相關演算法

每次面試的時候問演算法的時候否 近期計畫去刷一下演算法,也在此做一下記錄 判斷乙個正整數是不是回文數。回文數的定義是,將這個數反轉之後,得到的數仍然是同乙個數。11,121,1,12321 這些是回文數。23,32,1232 這些不是回文數。依次對num取餘,採用臨時引數reverse 記錄轉化後的...

LeetCode回文相關

目錄 647.回文子串 獲取所有的子串 方法一 奇數和偶數拓展 方法二 動態規劃 重要 5.最長回文子串 方法一 拓展 然後更新最長的數 680.驗證回文字串 可以刪除乙個字元 方法一 遇到不對勁直接刪除然後再對比 131.分割回文串 方法一 遞迴 重要 給定乙個字串,你的任務是計算這個字串中有多少...