精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

20200202 這個(gè)千年一遇的對(duì)稱(chēng)日,是時(shí)候?qū)ⅰ富匚乃惴ā挂痪W(wǎng)打盡!

大數(shù)據(jù) 數(shù)據(jù)可視化 算法
20200202 這種正反都一樣的串,在算法上稱(chēng)為「回文」,又因?yàn)椴煌慕Y(jié)構(gòu),被分為回文數(shù)、回文字符串、回文鏈表等。

[[313923]]

  今天是 2020 年 02 月 02 日,被稱(chēng)為「千年一遇的對(duì)稱(chēng)日」,20200202 正反都一樣,反正都是「愛(ài)你愛(ài)你」的意思。不少新人都選擇今天作為領(lǐng)證的日子,不過(guò)因?yàn)榉窝椎木壒剩行┑胤揭呀?jīng)取消了今日的預(yù)約。 

但是我們今天不聊這日子的寓意,我們來(lái)聊聊技術(shù)相關(guān)的話(huà)題。

20200202 這種正反都一樣的串,在算法上稱(chēng)為「回文」,又因?yàn)椴煌慕Y(jié)構(gòu),被分為回文數(shù)、回文字符串、回文鏈表等。

這分別又延伸出好幾個(gè) Leetcode 算法題,今天我們?cè)谶@個(gè)別人領(lǐng)證的日子,復(fù)習(xí)一下「回文」相關(guān)的算法題。

一. 驗(yàn)證回文字符串

今天的日期,用字符串表示是 "20200202",這就是一個(gè)回文字符串。

那么想要寫(xiě)個(gè)方法,驗(yàn)證其是否是一個(gè)回文字符串,拍腦袋想最簡(jiǎn)單的方法就是將字符串翻轉(zhuǎn)后比對(duì)。 

  1. boolean isPalindrome(String s) { 
  2.   return new StringBuilder(s).reverse().equals(s) 

 

但是多數(shù)情況下是不允許我們直接使用 Api,那除此之外,比較常用的方法就是用 2 個(gè)指針,從字符串的前后兩個(gè)方向,向內(nèi)夾。

  1. boolean isPalindrome(String s) { 
  2.     int i = 0; 
  3.   int j = s.length() - 1; 
  4.   while (i < j ) { 
  5.     if (Character.toLowerCase(s.charAt(i) != Character.toLowerCase(s.charAt(j))) { 
  6.         return false
  7.     } 
  8.     i++; 
  9.     j--; 
  10.   } 
  11.   return true

邏輯很簡(jiǎn)單,一個(gè)循環(huán)兩個(gè)指針,就搞定了。

但是因?yàn)檫@是一個(gè)字符串,很輕易的可以拿到字符串的長(zhǎng)度,所以一般算法題會(huì)加上一些額外的條件,增加難度。

例如 Leetcode 上的「125. 驗(yàn)證回文串」,給定的字符串是包含空格的。 

 這種情況呢,只需要把之前的解法改改就好了,兩個(gè)指針在移動(dòng)的時(shí)候,如果遇上 1 個(gè)空格就多走 1 步即可。 

  1. public boolean isPalindrome(String s) { 
  2.   int i = 0, j = s.length() - 1; 
  3.   while(i < j){ 
  4.     while(i < j && !Character.isLetterOrDigit(s.charAt(i))) 
  5.       i++; 
  6.     while(i < j && !Character.isLetterOrDigit(s.charAt(j))) 
  7.       j--; 
  8.     if(Character.toLowerCase(s.charAt(i)) != 
  9.        Character.toLowerCase(s.charAt(j))) 
  10.       return false
  11.     i++; j--; 
  12.   } 
  13.   return true

通過(guò) isLetterOrDigit() 可以直接判斷當(dāng)前字符是不是只屬于字母和數(shù)字。

關(guān)于字符串的回文算法,除了 125 之外,leetcode 第 680 題也屬于回文字符串,有興趣可以去看看。

二. 驗(yàn)證回文數(shù)

如果回文字符串中只包含數(shù)字,那么它也可以是一個(gè)回文數(shù),例如 20200202。

想要驗(yàn)證回文數(shù),比較簡(jiǎn)單的方法就是將其轉(zhuǎn)換字符串,然后用驗(yàn)證字符回文串的算法模式去套用。但是這并沒(méi)有用到數(shù)字的特性。

既然是數(shù)字,我們可以通過(guò)除法 / 和取余 % 的方式,將這個(gè)數(shù)字取出后半段進(jìn)行翻轉(zhuǎn),然后比對(duì)兩個(gè)數(shù)字的是否相等。

  1. public boolean isPalindrome(int x) { 
  2.   if (x < 0 || (x % 10 == 0 && x != 0)) 
  3.     return false
  4.   int revertedNumber = 0; 
  5.   while (x > revertedNumber) { 
  6.     revertedNumber = revertedNumber * 10 + x % 10; 
  7.     x /= 10; 
  8.   } 
  9.   return x == revertedNumber || x == revertedNumber / 10; 

 簡(jiǎn)單解釋一下:

1. 首先做一些簡(jiǎn)單的驗(yàn)證。如果一個(gè)大于 0 的非零數(shù),個(gè)位為 0 ,那么它注定不是一個(gè)回文數(shù)。因?yàn)閷?duì)應(yīng)的回文位置是這個(gè)數(shù)字的最高位,而最高位不會(huì)為 0。

2. 通過(guò)循環(huán),每次循環(huán)中,按位生成翻轉(zhuǎn)后的數(shù)字,并將原數(shù)字最低位打掉。

3. 如果跳出循環(huán),說(shuō)明后半部分已經(jīng)翻轉(zhuǎn)完畢,那么分兩個(gè)情況考慮,數(shù)字長(zhǎng)度是奇數(shù)還是偶數(shù)。然后判斷原數(shù)字 x 和后半部分翻轉(zhuǎn)的數(shù)字 reversedNumber 是否相同。

另外提一句,這道題是 Leetcode 上的「9. 回文數(shù)」題。

三. 驗(yàn)證回文鏈表

回文串和回文數(shù)都說(shuō)了,接下來(lái)看看回文鏈表。

單鏈表這種特殊的結(jié)構(gòu),想要確定個(gè)長(zhǎng)度也需要 O(n) 的復(fù)雜度,而且沒(méi)有前驅(qū)指針,雙指針前后夾的辦法是沒(méi)法用了。

當(dāng)然我們可以將它轉(zhuǎn)換為我們熟悉的回文數(shù)或者回文串進(jìn)行計(jì)算,但是這同樣沒(méi)有用到鏈表的特性。

在驗(yàn)證回文鏈表的場(chǎng)景下,我們可以通過(guò)快慢指針的方式找到鏈表的中間節(jié)點(diǎn),然后再將原鏈表的一半反轉(zhuǎn),之后開(kāi)始比對(duì)。

為了效率,可以把這兩個(gè)步驟糅合在 1 個(gè)循環(huán)中。

  1. public boolean isPalindrome(ListNode head) { 
  2.   if(head == null || head.next == null) { 
  3.     return true
  4.   } 
  5.   ListNode slow = head, fast = head; 
  6.   ListNode pre = head, prepre = null
  7.   while(fast != null && fast.next != null) { 
  8.     pre = slow; 
  9.     slow = slow.next
  10.     fast = fast.next.next
  11.     pre.next = prepre; 
  12.     prepre = pre; 
  13.   } 
  14.   // 如果 fast 不為 null,說(shuō)明是奇數(shù),需要再進(jìn)一位 
  15.   if(fast != null) { 
  16.     slow = slow.next
  17.   } 
  18.   // 此時(shí) pre 為反轉(zhuǎn)原鏈表前半部分的子鏈表 
  19.   // slow 為原鏈表的中間節(jié)點(diǎn) 
  20.   while(pre != null && slow != null) { 
  21.     if(pre.val != slow.val) { 
  22.       return false
  23.     } 
  24.     pre = pre.next
  25.     slow = slow.next
  26.   } 
  27.   return true

 第一遍循環(huán)之后,slow 節(jié)點(diǎn)指向了鏈表的中間位置,而 pre 則是翻轉(zhuǎn)了原鏈表的前半部分的子鏈表。

再通過(guò)一個(gè) while 循環(huán),將它們逐個(gè)比對(duì),就可以得到我們要的結(jié)果。

另外提一句,這道題是 Leetcode 上的「234. 回文鏈表」題。

四. 小結(jié)時(shí)刻

那今天就到這里,20200202 這個(gè)日子里,我們復(fù)習(xí)了一下回文相關(guān)的算法題,不知道分別從字符串、數(shù)字、鏈表三個(gè)方向橫向的看回文類(lèi)的題之后,你能總結(jié)出什么規(guī)律?歡迎在留言區(qū)討論。

因?yàn)橐咔榈木壒剩簧倥笥衙魅掌穑鸵袚Q到在家遠(yuǎn)程辦公狀態(tài)了,祝各位順利。

 

責(zé)任編輯:武曉燕 來(lái)源: 承香墨影
相關(guān)推薦

2024-04-26 00:25:52

Rust語(yǔ)法生命周期

2010-08-25 01:59:00

2021-08-05 06:54:05

流程控制default

2021-10-11 07:55:42

瀏覽器語(yǔ)法Webpack

2024-02-27 10:11:36

前端CSS@規(guī)則

2011-12-02 09:22:23

網(wǎng)絡(luò)管理NetQos

2013-08-02 10:52:10

Android UI控件

2024-06-12 00:00:05

2024-04-07 08:41:34

2024-08-26 10:01:50

2019-10-17 09:26:34

IDC資訊機(jī)房

2013-10-16 14:18:02

工具圖像處理

2023-04-06 09:08:41

BPM流程引擎

2020-02-21 08:45:45

PythonWeb開(kāi)發(fā)框架

2019-07-24 15:30:00

SQL注入數(shù)據(jù)庫(kù)

2023-09-26 00:29:40

CSS布局標(biāo)簽

2023-04-03 08:30:54

項(xiàng)目源碼操作流程

2009-04-02 10:17:00

交換機(jī)產(chǎn)品選購(gòu)

2020-10-19 06:43:53

Redis腳本原子

2021-05-20 11:17:49

加密貨幣區(qū)塊鏈印度
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品久久久久9999小说| 91免费版黄色| 日韩av在线看免费观看| 唐人社导航福利精品| 久久婷婷久久一区二区三区| 欧洲亚洲在线视频| 手机毛片在线观看| 日韩黄色三级| 一区二区三区视频在线看| 国产成人av一区二区三区| 日韩欧美性视频| 天堂资源在线亚洲| 欧美日韩国产色站一区二区三区| 亚洲一区二区三区精品动漫| 亚洲国产www| 亚洲制服av| 久久国内精品一国内精品| 欧美高清精品一区二区| 国产资源在线观看入口av| 久久久久久电影| 91精品美女在线| 日韩成人一区二区三区| 日韩久久久久| 精品久久久久久无| 9久久婷婷国产综合精品性色| 黄色小网站在线观看| www.av亚洲| 国产欧美日韩精品专区| 久久精品视频日本| 成人在线免费观看视频| 精品国一区二区三区| 毛片av免费在线观看| 成视频免费观看在线看| 久久一区二区视频| 91在线看网站| 一区二区三区麻豆| 亚洲人体大胆视频| 久久久精品久久久久| 久久国产精品无码一级毛片| 国产一区 二区| 欧美视频裸体精品| 日韩精品一区二区三区电影| 九一在线视频| 成人丝袜18视频在线观看| 成人黄色av播放免费| 6080午夜伦理| 亚洲高清网站| 欧美巨大黑人极品精男| 免费成人深夜蜜桃视频| 伊甸园亚洲一区| 精品国产一区二区三区av性色| 亚洲性图一区二区| 91tv亚洲精品香蕉国产一区| 精品国产91久久久| 国产xxxx振车| av网址在线免费观看| 国产香蕉久久精品综合网| 久久久久高清| 天堂网av2014| av不卡一区二区三区| 91香蕉视频在线下载| 国产熟女一区二区丰满| 成人一级片网站| 国产伦理吴梦梦伦理| 日本vs亚洲vs韩国一区三区 | 午夜啪啪福利视频| 国产福利电影在线| 精品一区二区三区在线观看| 国产精品普通话| 国产成人自拍视频在线| 激情丁香综合| 久久69精品久久久久久久电影好| 国产在线免费av| 国产一区国产二区国产三区| 亚洲美女www午夜| 夜夜爽久久精品91| www.欧美视频| 欧美高清www午色夜在线视频| 九色91popny| japanese23hdxxxx日韩| 精品久久久久久| 国产一区二区片| 成年人网站在线| 亚洲欧洲日韩综合一区二区| 亚洲一区三区视频在线观看| 福利在线观看| 久久久久久电影| 欧美精品欧美精品系列c| 欧美在线一卡| 久久久久青草大香线综合精品| av观看久久| 午夜av免费观看| 99久久精品国产麻豆演员表| 精品一区二区三区视频日产| 天堂av中文在线资源库| 久久久亚洲午夜电影| 久久久久久一区| 欧美女子与性| 国产欧美日韩卡一| 一区二区免费电影| 精品176二区| 亚洲精品视频自拍| www污在线观看| 东京一区二区| 欧美日韩日本视频| 91日韩精品视频| 精品久久国产一区| 精品国产伦一区二区三区观看体验 | 亚洲裸体xxxx| 公侵犯人妻一区二区三区| av在线不卡顿| 久热精品视频在线免费观看| 国产乱码久久久久久| 午夜亚洲性色福利视频| 国产精品男人爽免费视频1| 国产一区二区三区中文字幕| 风流少妇一区二区| 欧美在线日韩精品| 黄色动漫在线| 欧美日韩国产黄| 欧美视频国产视频| 精品少妇3p| 一区二区三区在线播放欧美| 香蕉久久久久久久| 欧美日韩网站| 欧美怡春院一区二区三区| 国产免费www| 国产成人在线影院| 欧美日韩国产三区| 日本精品600av| 日韩人体视频一二区| 天天干天天操天天玩| 看全色黄大色大片免费久久久| 在线观看中文字幕亚洲| 欧美日韩综合一区二区| 日韩中文字幕区一区有砖一区 | 午夜裸体女人视频网站在线观看| 欧美日韩亚洲综合在线 | 国产成人综合网| 欧美日韩一区二| 成人短视频在线| 在线看国产一区二区| 岛国精品一区二区三区| 欧美xxxx中国| 久久91精品国产| 中文字幕 亚洲视频| 91丨porny丨国产| 超碰在线免费观看97| 另类中文字幕国产精品| 亚洲成人av资源网| 国产一二三区精品| 日韩不卡一区二区三区| 精品国产二区在线| 2024短剧网剧在线观看| 91成人网在线| 精品无码在线视频| 伊人成人在线| 成人午夜在线影院| 3p在线观看| 色网综合在线观看| 星空大象在线观看免费播放| 重囗味另类老妇506070| 国产精品亚洲一区二区三区| 色视频在线观看免费| 亚洲国产aⅴ成人精品无吗| 依人在线免费视频| 精品国产一级毛片| 国产精品久久久久久久久久久新郎| 天天综合在线视频| 亚洲国产精品一区二区www在线| 免费看a级黄色片| 欧美影院天天5g天天爽| 欧美激情在线观看| www.国产三级| 亚洲免费毛片网站| 超碰中文字幕在线观看| 999精品色在线播放| 国产精品午夜一区二区欲梦| 第九色区av在线| 色国产精品一区在线观看| 亚洲国产欧美视频| 午夜宅男久久久| 国产一区二区精品免费| av资源在线看片| 337p日本欧洲亚洲大胆精品| 久久丫精品久久丫| 成av人片一区二区| 精品人妻少妇一区二区| 成人精品动漫一区二区三区| 国自在线精品视频| 天堂资源中文在线| 欧美午夜片在线免费观看| 成年人网站免费看| 日韩电影在线免费| 欧美亚洲丝袜| 日韩电影免费观| 色噜噜亚洲精品中文字幕| 97超碰国产在线| 亚洲欧美日韩一区二区| 黑人无套内谢中国美女| 激情欧美一区| 蜜桃av噜噜一区二区三区| 日韩三级影视| 按摩亚洲人久久| www.亚洲天堂.com| 欧美午夜电影在线| 战狼4完整免费观看在线播放版| 国产一区二区三区在线观看免费| 300部国产真实乱| 国产精品自在线拍| 国产精品69精品一区二区三区| h网站视频在线观看| 91精品福利在线一区二区三区| 国产在线视频99| 久久久99精品免费观看| 欧美精品第三页| 99久久久久国产精品| 成人自拍视频网站| 电影亚洲精品噜噜在线观看| 日韩在线观看免费| 色哟哟国产精品色哟哟| 欧洲av在线精品| 国产suv一区二区三区| av男人天堂一区| 婷婷激情四射五月天| 黄色精品免费| 精品一区二区视频| 成人精品国产亚洲| 久久久亚洲影院| 午夜老司机在线观看| 欧美v日韩v国产v| 精品无码一区二区三区的天堂| 亚洲美女视频在线观看| 久久精品老司机| 国产乱人伦偷精品视频不卡| 男人揉女人奶房视频60分| 91久久电影| 免费在线一区二区| 青青在线精品| 国产精品第一页在线| 牛牛在线精品视频| 日韩专区中文字幕| 天天干,夜夜爽| 91精品欧美一区二区三区综合在| 久久国产视频精品| 一区二区三区在线视频观看| 摸摸摸bbb毛毛毛片| 成人在线综合网| 九九热免费在线观看| 亚洲欧美日韩国产| 日韩成人三级视频| 999视频精品| 蜜桃传媒一区二区| 国产乱论精品| av在线亚洲男人的天堂| 日韩五码电影| 国产精品揄拍一区二区| f2c人成在线观看免费视频| 俺去了亚洲欧美日韩| bbbbbbbbbbb在线视频| 国产丝袜精品视频| 内射后入在线观看一区| 欧美一区二区三区影视| 一本色道久久综合熟妇| 在线观看网站黄不卡| 免费观看成人毛片| 亚洲成人一区在线| 永久免费看片视频教学| 亚洲欧美在线高清| 成人信息集中地| 中文字幕欧美日本乱码一线二线| 亚洲av无码一区二区二三区| 99re这里只有精品视频首页| 北京富婆泄欲对白| 成人动漫av在线| 亚洲精品激情视频| 成人免费毛片app| 波多野结衣在线免费观看| 毛片av一区二区| 欧美三级午夜理伦三级富婆| 免费在线观看一区二区三区| 激情综合网俺也去| 日本中文字幕一区二区视频| 在线观看的毛片| 免费高清视频精品| 手机在线国产视频| 韩国一区二区三区| 亚洲一区二区在线免费| 91亚洲国产成人精品一区二三| 精品无码国产一区二区三区51安| av电影一区二区| 中文字幕丰满孑伦无码专区| 久久精品视频一区二区三区| 成人在线观看免费高清| 中文字幕一区二区不卡| 国产一级性生活| 天天综合天天综合色| 黄色免费av网站| 欧洲中文字幕精品| 亚洲熟妇av乱码在线观看| 欧美精品丝袜久久久中文字幕| 国产三级按摩推拿按摩| 精品国产一区二区三区久久久蜜月 | 高清不卡一二三区| theav精尽人亡av| 久久精品亚洲一区二区三区浴池 | 久久久久久久黄色| 亚洲高清在线精品| 国产中文字幕视频| 欧美乱妇15p| 亚洲美女性生活| 亚洲成人激情视频| 久草资源在线| 97精品国产97久久久久久免费| 中文字幕这里只有精品| 国产精品偷伦一区二区| 天堂精品久久久久| 久久久久无码国产精品一区| 亚洲成av人片乱码色午夜| 日韩人妻一区二区三区蜜桃视频| 一本色道久久精品| 中文字幕永久有效| 菠萝蜜视频在线观看一区| 少妇一级黄色片| 亚洲国产精品久久久久秋霞影院| 人人爽人人爽人人片av| 在线成人免费观看| 日本a一级在线免费播放| 中文字幕国产亚洲| aa级大片免费在线观看| 国产免费一区视频观看免费| 欧美一级全黄| 国产日产欧美一区二区| 日韩精品电影在线观看| 日本精品一二三区| 国产亚洲一本大道中文在线| 日本在线小视频| 欧美精品日韩综合在线| 四虎影视在线播放| 欧美成人四级hd版| 久久av影院| 久久久精品动漫| 国精品一区二区| 国产97色在线 | 日韩| 不卡高清视频专区| 2025国产精品自拍| 欧美日韩综合在线免费观看| 午夜视频福利在线| 欧美国产欧美亚洲国产日韩mv天天看完整 | 成人软件在线观看| 国产高清一区二区三区| 91视频久久| 99草草国产熟女视频在线| av中文字幕一区| 麻豆视频在线观看| 欧美老肥妇做.爰bbww| 黄色小视频在线免费观看| 欧美日韩成人在线视频| 综合激情网...| 懂色av粉嫩av蜜臀av| 久久国产精品72免费观看| 中文字幕av久久爽一区| 日韩欧美在线视频| 亚洲人成色777777精品音频| 欧美精品做受xxx性少妇| 在线国产成人影院| 久久综合一区| 夜夜嗨一区二区| 蜜臀av粉嫩av懂色av| 亚洲一区二区在线播放相泽 | 欧美成人国产一区二区| 米奇精品一区二区三区| 国产精品久久二区| 97精品一区二区| 伊人成人222| 中文字幕中文字幕中文字幕亚洲无线 | 亚洲天堂视频在线播放| 亚洲天堂网站在线观看视频| 日韩不卡免费高清视频| 日韩一本精品| 日韩精品亚洲一区| 二区三区四区视频| 91精品国产91久久久久久一区二区 | 美女久久久精品| 亚洲午夜久久久久久久国产| 欧洲一区在线电影| 搞黄视频在线观看| 亚洲xxxxx性| 欧美午夜不卡| 日本道中文字幕| 精品国产户外野外| 能在线看的av| 国产精品久久久久久影视| 午夜影院欧美| 中国男女全黄大片| 亚洲成人av一区二区| 欧美日韩在线中文字幕| 国产精品美腿一区在线看| 亚洲成人精品| 激情av中文字幕|