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

Palindrome Number(回文串)

編輯:C++入門知識

Palindrome Number(回文串)


題目:

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

分析:

該題目來源於leetcode。回文串是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是回文串。當然整數形式的回文串也是類似的。但負數不是回文串。兩種思路:

按定義來,依次比較串的首尾,直到中間相隔1個或0個元素(取決於整數是奇數位數還是偶數位數)。優點是當不是回文串時,可以很快發現。如果是回文串,則必須比較全部位數。根據回文串的特點,正反序,其數是相同的。優點是不必按位數來判斷。

代碼:

class Solution {
public:
	bool isPalindrome(int x) {
		vector v;
		int i, j;
		if (x == 0)
			return true;

		while (x)
		{
			v.push_back(x % 10);
			x /= 10;
		}
		i = 0;
		j = v.size()-1;
		while (i < j)
		{
			if (v.at(i++) != v.at(j--))
				return false;
		}

		return true;
	}
};

class Solution {
public:
	bool isPalindrome(int x) {
		int y = 0;
		int t = x;

		if (t < 0) //負數不是回文串
			return false;

		while (t)
		{
			y = y * 10 + t % 10;
			t /= 10;
		}
		if (y ^ x) //判斷正反序是否相等
			return false;

		return true;
	}
};


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