演算法 判斷是否為回文字串

2021-09-17 22:13:15 字數 1013 閱讀 2260

問題:

字串是否為回文字串,如abcba (單鏈表儲存)

思路: 快慢指標找到中間節點,並且在慢指標移動時改變node的指向。

找到中間節點以後,從中間節點出發,前後遍歷比較值

步驟: 1.判斷傳入節點是否為空,接下來節點是否為空(非空判斷)

2.快慢指標移動,快指標正常移動,慢指標在移動時,改變node的指標方向,指向前乙個

3.快指標無法移動時,對奇數情況做出特殊處理

4.開始比較,慢指標往後,pre指標往前,同時開始比較

**如下(可直接執行):

public class singlylinedlist 

public static class listnode}/*

思路:快慢指標找到中間節點,並且在慢指標移動時改變node的指向。

找到中間節點以後,從中間節點出發,前後遍歷比較值

步驟:1.判斷傳入節點是否為空,接下來節點是否為空(非空判斷)

2.快慢指標移動,快指標正常移動,慢指標在移動時,改變node的指標方向,指向前乙個

3.快指標無法移動時,對奇數情況做出特殊處理

4.開始比較,慢指標往後,pre指標往前,同時開始比較

*/static class solution

listnode fast=head;

listnode slow=head;

listnode pre=null;

//為了偶數情況下才進行這兩個判斷,畫圖可以得到,這樣快指標移動時才不會報錯

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

//奇數情況,slow往後乙個,保證前後遍歷時起點相同

if (fast!=null)

//前後一起遍歷

while (slow!=null)

slow=slow.next;

pre=pre.next;

}return true;}}

}

判斷字串是否為回文串

題目 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false字串轉為小寫字串從字串開始和...

判斷字串是否回文字串

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false public static bo...

判斷單鏈表字串是否為回文字串

判斷單鏈表字串是否為回文字串 例如 abcba 上海自來水來自海上 思想 利用快慢指標,快指標一次走兩格,慢指標一次乙個,因為這個字串為單數,當快指標走到尾,慢指標正好走到中間,將這個中值儲存下來,利用乙個函式將後半部分反轉 因為中值已經被記錄,中值.next就是後半部分的head 用乙個比較函式比...