摘自《程式設計師面試寶典》 幾個有趣的演算法技巧

2021-08-27 07:27:05 字數 1304 閱讀 6227

1.如何計算乙個自然數轉成二進位制表示後包含1的數量

function f(n)

return count;

}console.log

(f(1024))

;

2.用乙個表示式判斷乙個數n是否是2的m次冪(m>1),限制:不可使用迴圈。

2的m次冪這樣的數轉化成二進位制是10,100,1000。若m減1後與x做與運算,答案若為0,則n是2的m次冪。

!

(n&(n-1)

)

3.交換a與b,即如何將a,b的值交換,並且不使用任何中間變數。 1)

var a =

1, b =2;

a = a + b;

b = a - b;

a = a - b;

console.log

(a);

console.log

(b);

2). 1)方法的缺點是若a,b都是比較大的數,則a = a + b時可能會超界。故採用

var a =

1, b =2;

a = a^b;

b = a^b;

a = a^b;

console.log

(a);

console.log

(b);

這樣便無須擔心超界的問題。

4.輸入一行字串,找出其中出現的相同且長度最長的字串,輸出它及其首字元的位置,如「yyabcdabjcabceg」,輸出結果應該為abc和3.

原理:可以將字串「yyabcdabjcabceg」分解成:

yyabcdabjcabceg

yabcdabjcabceg

abcdabjcabceg

bcdabjcabceg

cdabjcabceg

dabjcabceg

abjcabceg

bjcabceg

jcabceg

cabceg

abceg

bceg

cegeg

g

對這幾個字串排序,然後比較相鄰字串的前驅即可,很容易求出最長的公共前前驅。

function getlongestsubstring(str)}}

return0;

}console.log

(getlongestsubstring(

"yyabcdabjcabceg"))

;

程式設計師面試寶典

據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...

《程式設計師面試寶典》摘記

簡歷注意事項 1.簡歷不要太長 中文簡歷壓縮在 2頁左右就可以把所有的內容突出了。一般來說學習經歷應該從大學開始寫起。2.如實填寫。3.不要過分謙虛,不要把自己的一切包括弱項都寫進去。4.求職簡歷上一定要註明求職的職位。根據所申請的職位來設計,突出你在這方面的優點。編寫乙份或者幾份有針對性的簡歷。5...

程式設計師面試寶典一

1 int i i 首先宣告乙個變數i,然後將變數i的值 未初始化 賦值給自己 2 下面 的意義 void func int x,int count 求乙個整數轉換為二進位制之後包含多少個1 3 printf在vc6.0下是自右向左運算的 好像跟編譯器有關 int arr int ptr arr p...