程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Leetcode_Palindrome Number

Leetcode_Palindrome Number

編輯:關於C++

這個問題就是判斷整數是否為回文。

思路1:利用一個字符串,將int轉換為字符串,但這樣會需要使用額外的內存

思路2:經整數翻轉,然後與原來的整數比較是否相等,但這樣可能翻轉後的整數會溢出

思路3:不斷取整數的最高位和最低位(10進制下)進行比較,相等則取次高位和次低位進行比較

class Solution {
public:
    bool isPalindrome(int x) {
		if(x==0)
			return true;
		if(x<0)
			return false;
		int len=0;
		int copyX=x;
		while(copyX!=0)
		{
			++len;
			copyX=copyX/10;
		}
		copyX=x;
		for(int i=0;i<=len/2;++i)
		{
			if(copyX%10!=((int)(x/pow(10,(float)len-1-i))%10))
				return false;
			copyX=copyX/10;
		}
		return true;
        
    }
};

為了規避上面程序中所用到的pow,也可以換成另外一種方式:(此源碼來源於網上)

class Solution {
public:
    bool isPalindrome(int x) {
		if(x<0) return false;
		int d=1;
		while(x/d>=10) d*=10;//d為與x位數相同的整數,即10,100,1000等
		while(x>0)
		{
			int q=x/d;
			int r=x%10;
			if(q!=r) return false;
			x=x%d/10;//每次比較完之後,x就去點最高位和最低位
			d/=100;
		}
        return true;
    }
};



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved