[LeetCode] Palindrome Number Valid Palindrome - 回文系列问题
題目概述:
Determine whether an integer is a palindrome. Do this without extra space.
題目分析:
判斷數字是否是回文 例如121、656、3443
方法有很多,正著看和到著看兩數相同;當然負數顯然不是回文
我的方法:
第一種方法:
由于沒有沒有看到前面的without extra space。采用的方法是把數字轉換為字符串,依次比較最前和最后兩個字符是否相同,直到遍歷完畢。
通過依次比較最高位和最低位數字,然后依次數字降低兩位。要點是先計算最高位是多少位。需要注意計算高位時: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感覺還行,代碼如下:
? ? ? ? 最后希望文章對你有所幫助,如果文章中有錯誤或不足之處,還請海涵~
? ? ? ??(By:Eastmount 2015-9-24 凌晨4點???http://blog.csdn.net/eastmount/)
總結
以上是生活随笔為你收集整理的[LeetCode] Palindrome Number Valid Palindrome - 回文系列问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C/C++基础知识] 面试再谈stru
- 下一篇: [笔试题目] 腾讯2015年9月基础研究