範文齋

百度2012實習軟件研發工程師(C/C++開發)筆試題

找兄弟單詞,例如mary和army是兄弟單詞,即所含字母是一樣的,只是字母順序不同,給出一個單詞,要求在一個字典中找出該單詞的所有兄弟單詞,給出實現方案。我的解答:

百度2012實習軟件研發工程師(C/C++開發)筆試題

把各個單詞a的各個字母按照字母表順序排序,排序後的新單詞是b,然後根據b構建一棵二叉平衡樹,節點值爲b,各個節點存儲一個數組 ,就是b對應的所有a,這樣很容易找到所有的兄弟單詞

2. 關於兩個鏈表是否含有相同節點的,題目說什麼網絡爬蟲,從一個頁面開始爬,將爬到的url存到一個鏈表裏,假設每個頁面至多含有一個link(重點信息),現在從兩個不同頁面開始爬,將得到的url放到鏈表就得到了兩個鏈表,要求判斷兩個鏈表是否含有相同的url,假設每個鏈表的'包含的url有上百億個,不能用hash,給出算法。

我的解答:

上百億個url應該是存在文件裏面的,不會全部放到內存中。所以建立一棵B樹來存儲第一個鏈,對應的url存儲在文件中。然後依次把第二個鏈各個url在B樹做查找工作即可

3. 關於百度suggestion的

給出實現這個功能主要的數據結構和算法,以及優化的方法,提高時間和空間的效率。

我的解答:

採用堆排序算法

每個對應十個節點