C++程式:查詢數字二進位制形式中連續1的最長長度
假設我們有一個數字 n,我們需要找到其二進位制表示中連續1的最長長度。
因此,如果輸入類似於 n = 312,則輸出將為 3,因為 312 的二進位制表示為 100111000,並且存在 3 個連續的 1。
為了解決這個問題,我們將遵循以下步驟:
ret := 0,len := 0
從 i := 0 開始迴圈,當 i < 32 時,更新(i 增加 1),執行以下操作:
如果 n/2 是奇數,則
(len 增加 1)
否則
len := 0
ret := ret 和 len 的最大值
返回 ret
讓我們看看下面的實現,以便更好地理解
原始碼 (C++):
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int solve(int n) {
int ret = 0;
int len = 0;
for(int i = 0; i < 32; i++){
if((n >> i) & 1){
len++;
}else{
len = 0;
}
ret = max(ret, len);
}
return ret;
}
};
main(){
Solution ob;
cout << ob.solve(312);
}輸入
312
輸出
3
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP