向後讀和向前讀一樣的單詞、數字、短語或一組字符被稱為回文。當它的數字顛倒過來時,它們就和原來的數字完全相同。回文也可以是數字。例如,女士,1234321。通過這篇博客,我們將學習如何在Python中創建一個回文。
如果你想深入了解,一定要看看這個Python中的Palindrome免費課程.它涵蓋了python編程基礎比如它的語法、變量、數據類型、操作符、令牌和字符串。本課程還提供結業證書,以幫助您在競爭中保持領先。
- 什麼是Palindrome
- 什麼是回文數
- 什麼是回文字符串
- 什麼是回文短語
- 回文的例子
- Python中的回文算法
- Python代碼中的回文
一個。使用while循環
b。使用reverse命令功能 - 檢查一個鏈表是否為回文
什麼是Palindrome?
遲來的多元文化回文日快樂!2020年2月2日是2月一個特殊的日子。無論您喜歡的日期格式是MM/DD/YYYY還是DD/MM/YYYY或YYYY/MM/DD,它都有效。
這些模式被稱為回文。從第一個字符開始讀還是倒著讀都沒有什麼區別。這是一個使用編程來解決的有趣的介紹性問題。在這篇博客中,我們將理解思維過程,並一步一步地提出各種解決方案來檢查字符串是否是回文。
回文被定義為單詞、短語、數字或其他序列關於角色向後讀和向前讀是一樣的.
它們分為三種類型,一種是回文數,
回文串,回文短語:單詞和特殊字符的集合。
什麼是回文數?
回文數是一組數字的集合,向後讀時保持完全相同的方式。這些數字也被認為是對稱的。當它的數字顛倒過來時,它們就和原來的數字完全相同.例如:1234321是一個回文。如果它的數字顛倒過來,它又變成了1234321,這是我們原來的數字。1234232不是回文。當反轉時,新號碼變成2324321,而不是原來的號碼。
什麼是回文字符串?
回文字符串是一個字母的集合,向後讀時保持完全相同的方式。它們也被稱為對稱字母。當它的字母按相反的順序書寫時,它們就變成了與原始字符串完全相同的字母組合.例如:“夫人”是一個回文。它的字母顛倒了,它又變成了" madam "這是我們最初的字符串。“餐巾”不是回文。當反轉時,新的數字就變成了“nikpan”,與原來的字符串不同。
什麼是回文短語?
回文短語是單詞和特殊字符的集合,向後讀時保持完全相同的方式。這些短語也被認為是對稱的。當短語顛倒過來時,它們就變成了和原來的短語完全相同的短語。例如:a1b2c33c2b1a是一個回文.如果這個短語反過來,它又變成了a1b2c33c2b1a,這是我們最初的短語。a4b523kg不是回文。當反轉時,新的數字變成了gk325b4a,這與原來的短語不同。
回文短語是單詞和特殊字符的集合,向後讀時保持完全相同的方式。這些短語也被認為是對稱的。當短語顛倒過來時,它們就變成了和原來的短語完全相同的短語。例如:a1b2c33c2b1a是一個回文.如果這個短語反過來,它又變成了a1b2c33c2b1a,這是我們最初的短語。a4b523kg不是回文。當反轉時,新的數字變成了gk325b4a,這與原來的短語不同。
回文短語是單詞和特殊字符的集合,向後讀時保持完全相同的方式。這些短語也被認為是對稱的。當短語顛倒過來時,它們就變成了和原來的短語完全相同的短語。例如:a1b2c33c2b1a是一個回文.如果這個短語反過來,它又變成了a1b2c33c2b1a,這是我們最初的短語。a4b523kg不是回文。當反轉時,新的數字變成了gk325b4a,這與原來的短語不同。
回文短語是單詞和特殊字符的集合,向後讀時保持完全相同的方式。這些短語也被認為是對稱的。當短語顛倒過來時,它們就變成了和原來的短語完全相同的短語。例如:a1b2c33c2b1a是一個回文.如果這個短語反過來,它又變成了a1b2c33c2b1a,這是我們最初的短語。a4b523kg不是回文。當反轉時,新的數字變成了gk325b4a,這與原來的短語不同。
回文的例子
下麵是一些回文的例子
- 媽媽
- 夫人
- a2332a
- 橡膠
- 爸爸
- 123454321
瑣事:02/02/2020是一個回文字符串時,被認為是一個回文短語?
我們將研究構建檢查具有palindrome屬性的字符串的解決方案的邏輯步驟。
Python算法中的回文
在使用Python練習Palindromes算法和代碼之前,您可以通過並注冊這些Python相關的課程來熟悉Python編程語言,並獲得Great Learning Academy的免費證書。beplay2018官网
現在如何在Python中創建回文?
考慮問題陳述的算法:求if字符串是不是Palindrome
- 檢查索引的第一個字母和最後一個字母是否相同;如果不相同,返回false
- 重複第2步,遞增第一個索引,遞減最後一個索引
- 當first < last If(first > last)時重複第3步,然後返回True
現在讓我們考慮問題陳述的算法:求if數量是不是回文.
- 將輸入數字複製到另一個變量中,以便稍後進行比較。
- 接下來,我們將給定的數字顛倒過來。要將數字反轉,請遵循以下步驟:
- 分離a的最後一位數量.模運算符(%)返回除法的餘數
- 將lastDigit附加到反向.反向= (反向* 10) + lastDigit。
- 刪除最後一位數字數量.數量=數量/ 10。
- 迭代此過程。而(數量> 0)
- 現在我們將顛倒後的數與原數進行比較。
- 如果數字相同,則該數字為回文,否則則不是
現在我們有了算法,讓我們按照類似的邏輯將其轉換為代碼。
Python代碼中的回文
使用While循環(number)
number=int(input("輸入任意數字:"))#存儲該數字的副本temp=number #計算該數字的反向reverse_num=0 while(number>0): #提取該數字的最後一位digit=number%10 #在反向數字中追加該數字reverse_num*10+digit #將該數字除除,從數字中去掉最後一位number=number//10 #比較反向到原始數字if(temp==reverse_num): print("該數字是回文!")else: print("不是回文!")
使用While-loop字符串
def check_palindrome(string): length = len(string) first= 0 last= length -1 status= 1 while(first
輸入-女士
輸出-它是一個回文
這是個好辦法,但是Python還允許我們使用reverse函數.我們憑直覺知道,如果一個單詞是回文,那麼它可以正讀和倒讀。因此,讓我們為同一個字符串生成向前和向後字符串,並檢查兩個字符串是否相同。
使用反向函數
def check_palindrome_1(string): reversed_string = string[::-1] status=1 if(string!=reversed_string): status=0 return status string = input("輸入字符串:")status= check_palindrome_1(string) if(status): print("It is a palindrome ") else: print("Sorry! "再試一次”)
輸入:輸入字符串:malayalam
輸出:回文
這是個好辦法,但是Python還允許我們使用reverse函數.我們憑直覺知道,如果一個單詞是回文,那麼它可以正讀和倒讀。因此,讓我們為同一個字符串生成向前和向後字符串,並檢查兩個字符串是否相同。
使用反向函數
def check_palindrome_1(string): reversed_string = string[::-1] status=1 if(string!=reversed_string): status=0 return status string = input("輸入字符串:")status= check_palindrome_1(string) if(status): print("It is a palindrome ") else: print("Sorry! "再試一次”)
輸入:輸入字符串:malayalam
輸出:回文
Python中的回文程序
在本文中,我們將看到在Python中實現回文程序的不同方法:
回文字符串
方法1:
- 尋找字符串的逆序
- 檢查反向和原始是否相同
步驟:
- 我們創建一個ispalindrome函數
- 通過反向切片參數返回一個變量
- 在我們的驅動代碼中,我們寫了一個字符串
- 最後,在if-else條件中,如果它是回文,則執行打印yes或打印no
方法2:
- 使用迭代循環
步驟:
- 循環從開頭到長度的一半,並檢查字符串的第一個字符到最後一個字符。
- 檢查從第二個字符到字符串的倒數第二個字符…
- 如果有任何字符不匹配,那麼它就不是回文。
方法3:
- 使用內置函數反轉字符串
步驟:
- 在這個方法中,我們使用了一個預定義的函數'。join '
方法4:
- 使用遞歸
步驟:
- 該方法比較字符串的第一個元素和最後一個元素,並將子字符串的其餘部分遞歸調用給它自己。
鏈表中的回文
讓我們進一步考慮另一種數據結構。如果數據存儲在鏈表中呢?為了解決這個問題,我們需要理解鏈表。鏈表是一種具有不連續內存分配的數據結構.
我們將從用python定義鏈表開始。
class ListNode: def __init__(self, x): self。Val = x self。解決方法:def __init__(self,seq): """將列表項前置到鏈表""" self。head = None用於seq中的項目:node = ListNode(項目)節點。下一個=自我。頭的自我。head = node def palindrome(self): """檢查鏈表是否為回文並返回True/False。"""節點= self。head var = node #var初始化為head prev = None #, prev為None # prev接近列表中間,直到var到達end或None,而var和var.next: var = var.next temp = node。下一個#列表節點前半部分的反向元素。Next = prev prev = node node = temp如果var: #在奇數num元素的情況下tail = node。下一個else: #如果是偶數num元素tail = node,而prev: #比較反向元素和下一個半元素如果prev。Val ==尾巴。瓦爾:尾巴=尾巴。下一個prev = prev。下一個其他:返回False返回True #測試用例list_1 =解決方案((7、8、6、3、7、3、6、8、7])打印((7、8、6、3、7、3、6、8、7],結束=“- >”)打印(list_1.palindrome ()) list_2 =解決方案([6、3、4、6])打印(6,3、4、6,結束=“- >”)打印(list_2.palindrome ()) list_3 =解決方案([3、7、3])打印((3、7、3)結束=“- >”)打印(list_3.palindrome ()) list_4 =解決方案([1])打印([1],最後=“- >”)打印(list_4.palindrome ())
輸出-3,7,3 -正確
1 -正確
檢查鏈表是否為回文的邏輯是我們在字符串和數組上實現的邏輯的修改版本。我們檢查鏈表的倒數是否與原始序列相同。而不是反轉整個鏈表,並將其存儲在一個臨時位置,我們反轉鏈表的前半部分,並檢查反轉後的前半部分和後半部分是否匹配。
因此,我們定義了一個名為palindrome的函數,它有參數node, var(代表變量),previous和temp.我們在第29行使用變量var跳轉到列表的末尾,同時我們將前一個節點的數據存儲在變量prev中。因此,比較前。瓦爾和尾巴。第41行中的Val給出了答案。
#測試用例list_1 = Solution([7,8,6,3,7,3,6,8,7]) print(list_1.palindrome()) list_2 = Solution([6,3,4,6]) print(list_2.palindrome()) list_3 = Solution([3,7,3]) print(list_3.palindrome()) list_4 = Solution([1]) print(list_4.palindrome())
在這篇文章中,我們從頭到尾看了回文,並徹底理解了它們。嚐試使用不同的數據結構來提出更好的實現技術,以改進您的命令而不是編碼。我們將繼續發布更多關於使用Python實現數據結構和算法的文章。敬請關注並閱讀十大Python書籍.
進一步的閱讀
KickStart你的人工智能之旅與偉大的學習,提供beplay2018官网免費在線課程世界級的訓練。你是否感興趣機器學習、數據挖掘或數據分析大學beplay2018官网習為您量身打造課程!
12