<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          每日一例 | 回文數(shù)了解下?

          共 4972字,需瀏覽 10分鐘

           ·

          2021-05-14 15:38

          題目來源:力扣(LeetCode

          鏈接:https://leetcode-cn.com/problems/palindrome-number

          難度:簡單

          題目描述

          給你一個整數(shù) x,如果 x 是一個回文整數(shù),返回 true;否則,返回 false。

          回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。例如,121是回文,而 123 不是。

          示例 1:

          輸入:x = 121
          輸出:true

          示例 2:

          輸入:x = -121
          輸出:false

          解釋:從左向右讀, 為 -121 。從右向左讀, 為 121- 。因此它不是一個回文數(shù)。示例 3:

          輸入:x = 10
          輸出:false

          解釋:從右向左讀, 為 01 。因此它不是一個回文數(shù)。示例 4:

          輸入:x = -101
          輸出:false

          提示:

          -231 <= x <= 231 - 1

          第一次提交

          看完這個題,特別是用例和結(jié)果,我發(fā)現(xiàn)和昨天分享的那種解法,剛好也可以用到這里,所以很多,我有了第一種解法:

          class Solution {
              public boolean isPalindrome(int x) {
                      if (x < 0) {
                          return false;
                      }
                      int n = 0;
                      int temp = x;
                      while (x != 0) {
                          n = n * 10 + x % 10;
                          x = x / 10;
                      }
                      return n == temp;
                  }
          }

          從提交結(jié)果來看,還是挺不錯的。我們來簡單說下思路,根據(jù)題目描述,回文數(shù)的特點有以下幾點:

          • 正序和反序(反轉(zhuǎn))數(shù)值一樣
          • 負數(shù)都不是回文數(shù)

          所以第一種解法就是將目標數(shù)反轉(zhuǎn),先判斷是否為負數(shù),負數(shù)直接返回false,然后計算目標數(shù)值的反轉(zhuǎn)數(shù),比較反轉(zhuǎn)前和反轉(zhuǎn)后是否一致,一致就是回文數(shù),否則就不是

          第二次提交

          其實,第二次可能是大部分人的思路(包括我),如果不是剛做完整數(shù)反轉(zhuǎn),那我可能也這么做了:

          class Solution {
              public boolean isPalindrome(int x) {
                  if (x < 0) {
                      return false;
                  }
                  boolean isPalindrome = false;
                  String xStr = String.valueOf(x);
                  char[] chars = xStr.toCharArray();
                  for (int i = 0; i <= chars.length / 2; i++) {
                      isPalindrome = (chars[i] == chars[chars.length -1 -i]);
                      if (!isPalindrome) {
                          return isPalindrome;
                      }
                  }
                  return isPalindrome;
              }
          }

          提交結(jié)果和第一次差不多,但是時間上比第一次長了一點。這里的思路就很簡單了,就是挨個比較,比較數(shù)字長度的一半就可以:

          簡單優(yōu)化

          把上面的代碼做了一些簡單的優(yōu)化修改,內(nèi)存消耗方面有了較大的提升:

          class Solution {
              public boolean isPalindrome(int x) {
                  if (x < 0) {
                      return false;
                  }
                  char[] chars = String.valueOf(x).toCharArray();
                  for (int i = 0; i <= chars.length / 2; i++) {
                      if (!(chars[i] == chars[chars.length -1 -i])) {
                          return false;
                      }
                  }
                  return true;
              }
          }

          當然如果從代碼的可讀性上講,第一種會比第二種更好,但是算法往往是考慮性能的,所以如果單純從算法角度來說,第二種更好。

          總結(jié)

          算法問題永遠不會是唯一解,解決問題的關鍵在于你要有正確的解題思路,而思路的建立又依托于你對問題的建模能力(抽象化思維),建模能力又是靠不斷地解決問題積累的,總結(jié)下就是算法考察的是你的邏輯思維(數(shù)學能力)和抽象化思維(實際問題抽象成模型,將問題與模型匹配,選擇更合適的模型),看你是否可以將這兩者很好的結(jié)合,寫出最優(yōu)解,畢竟日常工作中,一切業(yè)務邏輯本質(zhì)上都是算法,一切業(yè)務邏輯的實現(xiàn)過程就是建立算法的過程,所以算法能力就是你編程能力的體現(xiàn)。

          作為一個開發(fā)工程師,算法能力是最基本但特別重要的能力,這個能力和語言、系統(tǒng)、環(huán)境無關無關的,但很大程度上決定了你在這個行業(yè)能走多遠,畢竟大廠對于算法都是有要求的,如果你的算法能力很差,沒人會相信你能寫出好代碼。好了,今天就到這里吧,一定要堅持學習哦!

          項目路徑:

          https://github.com/Syske/example-everyday

          本項目會每日更新,讓我們一起學習,一起進步,遇見更好的自己,加油呀

          - END -


          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久免费少妇做爰高潮彭水 | 日本久久不卡 | 欧美 亚洲 日韩 国产 高清 | 特黄AAAAAAAAA级毛片厂 | 动漫操逼视频免费看 |