日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[LeetCode] Palindrome Number Valid Palindrome - 回文系列问题

發布時間:2024/5/28 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [LeetCode] Palindrome Number Valid Palindrome - 回文系列问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目概述:

Determine whether an integer is a palindrome. Do this without extra space.


題目分析:

判斷數字是否是回文 例如121、656、3443
方法有很多,正著看和到著看兩數相同;當然負數顯然不是回文

我的方法:

第一種方法:
由于沒有沒有看到前面的without extra space。采用的方法是把數字轉換為字符串,依次比較最前和最后兩個字符是否相同,直到遍歷完畢。

/*** 判斷一個數字是否是回文數字 Palindrome* 最簡單方法數組存儲數字每位 判斷回文 或依次比較數字left和right */ bool isPalindrome(int x) {char str[20]; //存儲數字位數int i,j;int count; //數字位數//負數肯定不是回文if(x<0) return false;i=0;while(x>0) {str[i]=x%10+'0';i++;x=x/10;}count=i;i=0;j=count-1;while(i<j) {if(str[i]==str[j]) {i++;j--;}else {return false;}}return true; } 第二種方法:
通過依次比較最高位和最低位數字,然后依次數字降低兩位。要點是先計算最高位是多少位。需要注意計算高位時:x=x-(left*result)
例如110011 ?高位-1 低位-1 ? 110011-100000=10011 ?10011/10=1001再判斷,而%會出現錯誤。

/*** 判斷一個數字是否是回文數字 Palindrome* without extra space. */ bool isPalindrome(int x) {int left,right; //數字高低位int result; //計算高位數字int number;if(x<0) return false;//計算最高位result=1;number=x;while(number>=10) { //注意=10result=result*10;number=number/10;}while(x>0) {left=x/result; //高位right=x%10; //低位if(left!=right) {return false;}else { //同時縮小兩位 5005-5*1000=5 x=x-(left*result); //注意不能是 x=x%(left*result) 1100110011 Runtime Error result=result/100;x=x/10;}}return true; }

Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

該題目主要是判斷字符串是否是回文,其中僅僅是字母和數字組成,需要刪除額外字符。注意:大小寫字母可以相同'z'=‘Z’,大寫字母轉小寫字母加32即可。
判讀一個字符串是否是回文,一種方法可以將字符串倒置然后和原字符串進行比較。這里采用一種類似字符串翻轉的方法,通過從前后兩個方向來比較判斷是否是回文。
自己AC感覺還行,代碼如下:

//自定義函數 判斷是否是數字或字母 bool IsNumberAlp(char ch) {if( (ch<='Z'&&ch>='A') || (ch<='z'&&ch>='a') || (ch<='9'&&ch>='0') ) {return true;}else {return false;} }//字符串回文判斷 包括字母和數字 "aA" 返回True說明不區分大小寫 bool isPalindrome(char* s) {int length; //字符串長度int i,j;char left,right; //比較兩個字符//s輸出true ""if(s==NULL)return true;length=strlen(s);//數組下標i從前往后遍歷 j從后往前遍歷i=0;j=length-1;left=0;right=0;while(i<=j){if(IsNumberAlp(s[i])==true) { //字母 數字left = s[i];if(left>='A'&&left<='Z') { //大寫字母轉小寫字母加32(重點)left=left+32;}}else {i++;continue;}if(IsNumberAlp(s[j])==true) {right = s[j];if(right>='A'&&right<='Z') { right=right+32;}}else {j--;continue;}if(left!=right) {return false;} else {i++;j--;}}return true; }

? ? ? ? 最后希望文章對你有所幫助,如果文章中有錯誤或不足之處,還請海涵~
? ? ? ??(By:Eastmount 2015-9-24 凌晨4點???http://blog.csdn.net/eastmount/)

總結

以上是生活随笔為你收集整理的[LeetCode] Palindrome Number Valid Palindrome - 回文系列问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。