求一個二進制串mod 3的餘數

求一個二進制串mod 3的餘數

      這是某BAT公司技術面三面的一道代碼題目,沒做出來,現在整理一波

       首先,第一個思路是將這個二進制串轉換爲十進制,然後再進行計算,但是這個肯定不是面試官想要的答案,對於很長的二進制串不能轉換爲十進制數字。

       下面講第二個思路,狀態機(其實可用於求mod任何數的情況)

       整個狀態機分爲三個狀態,0,1,2,分別代表三種餘數情況,從二進制串的第一位開始讀,如果爲0,則從0開始,下面讀到一個1,則轉換到狀態1(相當於0*2+1),讀到的還是0則轉換到狀態0(相當於0*2+0),以此類推,形成狀態機如下:

根據這個狀態機寫代碼就很容易啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章