乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      回文數(shù) Leecode 9. Palindrome Number

       印度阿三17 2019-03-09

      Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

      Example 1:
      
      Input: 121
      Output: true
      Example 2:
      
      Input: -121
      Output: false
      Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
      Example 3:
      
      Input: 10
      Output: false
      Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

      Follow up:
      Coud you solve it without converting the integer to a string?

      我們先寫幾個數(shù)字:

      -12321 //不是回文數(shù)
      6 //是回文數(shù)
      10 //不是回文數(shù)
      123454321 //是回文數(shù)
      12344321 //是回文數(shù)

      ??設傳入的數(shù)為x。這里我們需要判斷一個數(shù)是否為回文數(shù),首先小于10的數(shù)肯定是回文數(shù),負數(shù)肯定不是回文數(shù),十的倍數(shù)肯定不是回文數(shù),這里我們可以提前確定。

      if(x<0) return false;
      if(x<10) return true;
      if(x==0) return false;

      ??以上條件是可以一眼看出來的,那大于10的回文數(shù)怎么判斷呢,可以觀察一下回文數(shù)的特性。

      ??123454321

      ??最高位等于最低位,次高位等于次低位,依次下去。我們想取得高位很麻煩,取到低位倒是很簡單,可以用x。在用x/=10,我們可以通過循環(huán)依次獲取到1,2,3,4,5,4,3,2,1。我們將這些獲得到的數(shù)字*10 下一位到最后不就是x?這種辦法是行的通的。

      class Solution{
          public boolean isPalindrome(int x) {
              if (x < 0 || (x != 0 && x == 0)) return false;//小于0,10的倍數(shù)都不是回文數(shù)
              if (x < 10) return true;//小于10大于等于0的是回文數(shù)
              int num = 0;
              int temp = x;
              while (x != 0){
                  num = num*10   x;//從最低位開始算x的倒置值
                  x = x/10;
              } 
              return num==temp;//如果倒置值等于x的值則是回文數(shù)返回true,否則false
          }
      }

      ??這個方法將整個回文數(shù)都遍歷一遍,很明顯回文數(shù)是具有對稱性的,有沒有什么辦法可以只遍歷一半的回文數(shù)解決問題。

      ??如果回文數(shù)位數(shù)是偶數(shù)位的話,例如123321,我們從最低位算倒置數(shù)時,遍歷到一半,123 等于此時x(123),此時可以判定123321是回文數(shù)。

      ??如果回文數(shù)位數(shù)是奇數(shù)位的話,例如1234321,我們從最低位算倒置數(shù)時,遍歷到一半,123 等于此時x(1234),此時怎么判定呢?不管中間數(shù)(4)是多少只要此時倒置數(shù)等于x/10也能判定此數(shù)是回文數(shù)。

      class Solution{
          public boolean isPalindrome(int x) {
              if (x < 0 || (x != 0 && x == 0)) return false;
              if (x < 10) return true;
              int num = 0;
              while (x > num){//此時num不能大于x
                  num = num*10   x;
                  x = x/10;
                  if(num == x/10)return true;//奇數(shù)位回文數(shù)會在這里退出
              } 
              return x == num;//偶數(shù)位回文數(shù)會在這里退出
          }
      }

      ??另一種寫法:因為num不能大于等于x,num >= x時會跳出循環(huán),此是如果x == num/10也是回文數(shù)(此時回文數(shù)是奇數(shù)位)。num == x時也是回文數(shù)(此時回文數(shù)是偶數(shù)位)。

      class Solution{
          public boolean isPalindrome(int x) {
              if (x < 0 || (x != 0 && x == 0)) return false;
              if (x < 10) return true;
              int num = 0;
              while (x > num){
                  num = num*10   x;
                  x = x/10;
              } 
              return x == num || x == num/10;
          }
      }
      來源:http://www./content-4-135251.html

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多