日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

幂等问题 vs 如何判断是否是4的幂

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 幂等问题 vs 如何判断是否是4的幂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

判斷是否是4的冪

  • 🤹序言
  • 🚴一、需求分析 - 判斷是否是4的冪等
  • 🤾二、實現版本
    • 1. 版本一:中規中矩法
    • 2. 版本二:按位與
    • 3. 版本三:按位與優化
    • 4. 版本四:正則匹配法
  • ??三、結束語
  • 🤼往期推薦

🤹序言

我們以前在做數學的時候,經常會有各種冪等計算。比如說,40=1;41=4;42=16;43=64;44=256;像諸如此類的計算就是冪等。

那如果把它放到前端的程序中,又該如何來說判斷呢?

🚴一、需求分析 - 判斷是否是4的冪等

首先,我們想要實現的是,當輸入一個數時,點擊判斷。如果符合4的冪,那么輸入框里面的數變為綠色;反之不符合的話,那么輸入框的數就變為紅色。如下圖所示:

那么接下來,我們由淺入深的來講解一種實現效果。

🤾二、實現版本

1. 版本一:中規中矩法

先附上代碼:

HTML 代碼:

<input id="num" value="65536"></input> <button id="checkBtn">判斷</check>

CSS 代碼:

#num {color: black; }#num.yes {color: green; }#num.no {color: red; }

JS 代碼:

funciton isPowerOfFour(num) {num = parseInt(num);while(num > 1) {if(num % 4) return false;num /= 4;}return true; }

最中規中矩的方法是上面這一種方法,首先先將 num 對 4 取余,如果發現取余后不為 0 ,那么返回 false ;

如果滿足,那么繼續對 num 進行除以 4 操作,以此步驟進行循環,直到 num <= 1 為止。

2. 版本二:按位與

先附上代碼:

HTML 代碼:

<input id="num" value="65536"></input> <button id="checkBtn">判斷</check>

CSS 代碼:

#num {color: black; }#num.yes {color: green; }#num.no {color: red; }

JS 代碼:

function isPowerOfFour(num) {num = parseInt(num);while(num > 1) {// 對4取余相當于判斷二進制數的末兩位if(num & 0b11) return false;// 將 num 右移兩位num >>>= 2;}return true; }

第二種方式我們可以采用按位與操作,對 4 取余就相當于判斷二進制數的末兩位,也就是 0b11 。之后將 num 右移兩位,即 num >>>= 2 。

3. 版本三:按位與優化

先附上代碼:

HTML 代碼:

<input id="num" value="65536"></input> <button id="checkBtn">判斷</check>

CSS 代碼:

#num {color: black; }#num.yes {color: green; }#num.no {color: red; }

JS 代碼:

function isPowerOfFour(num) {num = parseInt(num);return num > 0 &&(num & (num - 1)) === 0 &&(num & 0xAAAAAAAA) === 0 }

版本二事實上是 log(n) 的一個事件復雜度,那我們還可以再繼續優化,也就是上面的版本三,常數復雜度的算法 O(1) 。

首先第一個條件是, num 必須大于 0 。

第二個條件呢,是 (num & (num - 1)) === 0 。用于在每一次計算后去掉當前數最末位的 1 。如果數字只有一個 1 時,過濾出數字里面只有一個 1 的二進制數。

第三個條件是判斷,這些數的末位不能有 1 、3 、 5 、 7 、9 等奇數個 0 的情況。

對于這種算法來說,算是性能相對較好、代碼相對也比較簡潔,所以在實際的使用中,還是值得使用的。

4. 版本四:正則匹配法

先附上代碼:

HTML 代碼:

<input id="num" value="65536"></input> <button id="checkBtn">判斷</check>

CSS 代碼:

#num {color: black; }#num.yes {color: green; }#num.no {color: red; }

JS 代碼:

function isPowerOfFour(num) {// 先把 num 轉成一個二進制的字符串num = parseInt(num).toString(2);// 再用正則表達式來匹配這個二進制的字符串return /^1(?:00)*$/.test(num); }

如果遇到計算規模不是很大的時候,我們還可以用正則表達式的方式來處理。上面這種方法利用 JavaScript 轉換字符串和正則的特性,來對 4 的冪等進行計算。

相比于第三種方法來說,時間開銷確實會大一點,但還是算在可以接受的范圍內。

??三、結束語

在上面的文章中,我們使用了 4 種方法來解決冪等問題,有時間復雜度很低的按位與優化,還有簡潔明了的正則匹配法。不知道大家是否都掌握了呢?

如果您覺得這篇文章有幫助到您的的話不妨點贊支持一下喲~~😉

🤼往期推薦

👉緊跟月影大佬的步伐,一起來學習如何寫好JS(上)

👉緊跟月影大佬的步伐,一起來學習如何寫好JS(下)

👉每天都在紅綠燈前面梭行,不如自己來實現個紅綠燈?

總結

以上是生活随笔為你收集整理的幂等问题 vs 如何判断是否是4的幂的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 老司机精品视频在线 | 91禁在线动漫 | 欧美电影一区 | 琪琪五月天 | 亚洲精品美女 | 人人妻人人澡人人爽人人精品 | www.九色| 国产成人av一区二区三区在线观看 | 极品白嫩丰满美女无套 | 国产欧美综合一区 | 精品人妻少妇一区二区三区 | 天天综合网国产 | 亚洲成人动漫在线观看 | www.久久久久 | av加勒比| 操丝袜美女视频 | 日韩久久精品电影 | 极品销魂美女少妇尤物 | 国产在线区 | 嘿咻视频在线观看 | 国产精品久久久久久亚洲调教 | 国产精品丝袜在线 | 天天爽天天摸 | 人妻无码一区二区三区久久 | 激情免费视频 | 欧美日韩另类在线 | 含羞草一区二区 | 亚洲一级特黄毛片 | 色综合欧美 | 日日干狠狠干 | 成人网址在线观看 | 婷婷视频一区 | 亚洲精品影院在线 | 色av网站| 蜜臀av在线免费观看 | 国产伦精品一区二区三区四区免费 | 日本伦理中文字幕 | 亚洲干 | 国产男女无套免费网站 | 91黄版| 懂色av一区二区三区免费观看 | 久久精品一区二区三区四区 | 日本免费在线观看视频 | 国产精品传媒一区二区 | jizz日本免费 | 中文字幕爱爱 | 日韩精品1区 | 九九视频在线免费观看 | 一区二区三区免费在线 | 夜夜操影视 | 免费久久精品视频 | 日本中文字幕在线不卡 | 欧美精品一区在线 | 床戏高潮呻吟声片段 | 蜜臀av中文字幕 | 大j8黑人w巨大888a片 | 色激情五月 | 巨大黑人极品videos精品 | 日韩a级片在线观看 | 一区二区三区视频在线观看 | 欧美女同在线 | 在线观看亚洲欧美 | 一区二区欧美在线 | 国产美女永久免费 | 久久久久久成人精品 | 少妇野外性xx老女人野外性xx | 97在线免费观看视频 | 久久免费的精品国产v∧ | 亚欧精品在线观看 | 久久九精品 | 北条麻妃av在线播放 | caoprom超碰| 一本之道高清无码视频 | 亚洲成肉网 | 妖精视频一区二区三区 | 国产免费黄色 | 国产情侣91 | 色av影院 | 亚洲黄色一区二区三区 | 淫五月| jizz中国少妇 | 黄色三级视频在线观看 | 日本在线视频www | 亚洲拍拍视频 | 青青青青在线 | 黄色不雅视频 | 日本爱爱免费视频 | 国产香蕉视频在线播放 | 国产一区二区三区在线看 | 国产伦精品一区二区三区 | 另类视频在线观看+1080p | 99er在线 | 四虎影视免费 | 国产精品无码久久久久 | 国产成人精品一二三区 | 欧美一级网 | 精人妻一区二区三区 | 国产色在线视频 | 骚虎免费视频 |