1. 程式人生 > >分類整理IV 微軟等100題系列V0 1版 字串+陣列面試題集錦

分類整理IV 微軟等100題系列V0 1版 字串+陣列面試題集錦

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

微軟等100題系列V1.0版整理IV字串+陣列面試題集錦

 

 July   2010年12月30日

第4章 字串+陣列面試題

在微軟等100題系列V0.1版中,此類字串+陣列的問題,佔了足足22道。

可見 字串+陣列等基礎問題之重要性。

 

接下來的倆天,我會加快分類整理完100題系列V0.1版,然後加緊整理完網友的答案回覆,

最後,我挑選其中最為經典的幾道題,直接在部落格上貼出原始碼、答案。

為了迎接在2011年元旦之際,微軟等資料結構+演算法面試100題系列V0.2版的出爐。

請繼續保持關注。謝謝。:D。July、十二月三十日。

 

[分類整理I]微軟等100題系列V0.1版:c/c++基礎面試題集錦
http://blog.csdn.net/v_JULY_v/archive/2010/12/14/6076111.aspx
[分類整理II]微軟等100題系列V0.1版:連結串列面試題集錦

http://blog.csdn.net/v_JULY_v/archive/2010/12/14/6076139.aspx
[分類整理III]微軟等100題系列V0.1版之三:棧、堆、佇列面試題集錦 
http://blog.csdn.net/v_JULY_v/archive/2010/12/17/6083098.aspx

--------------------------------

3.求子陣列的最大和
題目:
輸入一個整形陣列,數組裡有正數也有負數。
陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。
求所有子陣列的和的最大值。要求時間複雜度為O(n)。

例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,
因此輸出為該子陣列的和18。


第10題
翻轉句子中單詞的順序。
題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。

句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。
例如輸入“I am a student.”,則輸出“student. a am I”。


第14題:
題目:輸入一個已經按升序排序過的陣列和一個數字,
在陣列中查詢兩個數,使得它們的和正好是輸入的那個數字。
要求時間複雜度是O(n)。如果有多對數字的和等於輸入的數字,輸出任意一對即可。
例如輸入陣列1、2、4、7、11、15和數字15。由於4+11=15,因此輸出4和11。

 

第17題:
題目:在一個字串中找到第一個只出現一次的字元。如輸入abaccdeff,則輸出b。 
分析:這道題是2006年google的一道筆試題。

 

第20題:
題目:輸入一個表示整數的字串,把該字串轉換成整數並輸出。
例如輸入字串"345",則輸出整數345。

 

第25題:
寫一個函式,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字串中找出連續最長的數字串,並把這個串的長度返回,
並把這個最長數字串付給其中一個函式引數outputstr所指記憶體。
例如:"abcd12345ed125ss123456789"的首地址傳給intputstr後,函式將返回9,
outputstr所指的值為123456789


26.左旋轉字串

題目:
定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。

如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。
要求時間對長度為n的字串操作的複雜度為O(n),輔助記憶體為O(1)。


37.
有n個長為m+1的字串,
如果某個字串的最後m個字元與某個字串的前m個字元匹配,則兩個字串可以聯接,
問這n個字串最多可以連成一個多長的字串,如果出現迴圈,則返回錯誤。

 

45.雅虎:
1.對於一個整數矩陣,存在一種運算,對矩陣中任意元素加一時,需要其相鄰(上下左右)
某一個元素也加一,現給出一正數矩陣,判斷其是否能夠由一個全零矩陣經過上述運算得到。

2.一個整數陣列,長度為n,將其分為m份,使各份的和相等,求m的最大值
  比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;
  {3,6}{2,4,3} m=2
  {3,3}{2,4}{6} m=3 所以m的最大值為3


48.微軟:
一個數組是由一個遞減數列左移若干位形成的,比如{4,3,2,1,6,5}
是由{6,5,4,3,2,1}左移兩位形成的,在這種陣列中查詢某一個數。


51.和為n連續正數序列。
題目:輸入一個正數n,輸出所有和為n連續正數序列。

例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。
分析:這是網易的一道面試題。


53.字串的排列。
題目:輸入一個字串,打印出該字串中字元的所有排列。
例如輸入字串abc,則輸出由字元a、b、c所能排列出來的所有字串
abc、acb、bac、bca、cab和cba。

分析:這是一道很好的考查對遞迴理解的程式設計題,
因此在過去一年中頻繁出現在各大公司的面試、筆試題中。

 

54.調整陣列順序使奇數位於偶數前面。

題目:輸入一個整數陣列,調整陣列中數字的順序,使得所有奇數位於陣列的前半部分,
所有偶數位於陣列的後半部分。要求時間複雜度為O(n)。


56.最長公共字串。
題目:如果字串一的所有字元按其在字串中的順序出現在另外一個字串二中,

則字串一稱之為字串二的子串。

注意,並不要求子串(字串一)的字元必須連續出現在字串二中。
請編寫一個函式,輸入兩個字串,求它們的最長公共子串,並打印出最長公共子串。

例如:輸入兩個字串BDCABA和ABCBDAB,字串BCBA和BDAB都是是它們的最長公共子串,
則輸出它們的長度4,並列印任意一個子串。

分析:求最長公共子串(Longest Common Subsequence, LCS)是一道非常經典的動態規劃題,
因此一些重視演算法的公司像MicroStrategy都把它當作面試題。


63.在字串中刪除特定的字元。
題目:輸入兩個字串,從第一字串中刪除第二個字串中所有的字元。

例如,輸入”They are students.”和”aeiou”,

則刪除之後的第一個字串變成”Thy r stdnts.”。

分析:這是一道微軟面試題。在微軟的常見面試題中,與字串相關的題目佔了很大的一部分,
因為寫程式操作字串能很好的反映我們的程式設計基本功。

 

69.旋轉陣列中的最小元素。
題目:把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個排好序的陣列的一個旋轉,

輸出旋轉陣列的最小元素。例如陣列{3, 4, 5, 1, 2}為{1, 2, 3, 4, 5}的一個旋轉,該陣列的最小值為1。

    分析:這道題最直觀的解法並不難。從頭到尾遍歷陣列一次,就能找出最小的元素,
時間複雜度顯然是O(N)。但這個思路沒有利用輸入陣列的特性,我們應該能找到更好的解法。

 

73.對策字串的最大長度。
題目:輸入一個字串,輸出該字串中對稱的子字串的最大長度。
比如輸入字串“google”,由於該字串裡最長的對稱子字串是“goog”,因此輸出4。

分析:可能很多人都寫過判斷一個字串是不是對稱的函式,這個題目可以看成是該函式的加強版。

 

85.又見字串的問題
1.給出一個函式來複制兩個字串A和B。
字串A的後幾個位元組和字串B的前幾個位元組重疊。
分析:記住,這種題目往往就是考你對邊界的考慮情況。
2.已知一個字串,比如asderwsde,尋找其中的一個子字串比如sde的個數,
如果沒有返回0,有的話返回子字串的個數。


88.2005年11月金山筆試題。編碼完成下面的處理函式。
函式將字串中的字元'*'移到串的前部分,

前面的非'*'字元後移,但不能改變非'*'字元的先後順序,函式返回串中字元'*'的數量。
如原始串為:ab**cd**e*12,
處理後為*****abcde12,函式並返回值為5。(要求使用盡量少的時間和輔助空間)

 

93.在一個int數組裡查詢這樣的數,它大於等於左側所有數,小於等於右側所有數。
直觀想法是用兩個陣列a、b。a[i]、b[i]分別儲存從前到i的最大的數和從後到i的最小的數,

一個解答:這需要兩次遍歷,然後再遍歷一次原陣列,
將所有data[i]>=a[i-1]&&data[i]<=b[i]的data[i]找出即可。

給出這個解答後,面試官有要求只能用一個輔助陣列,且要求少遍歷一次。


94.微軟筆試題
求隨機數構成的陣列中找到長度大於=3的最長的等差數列9 d- x' W) w9 ?" o3 b0 R
輸出等差數列由小到大:
如果沒有符合條件的就輸出
格式:
輸入[1,3,0,5,-1,6]
輸出[-1,1,3,5]
要求時間複雜度,空間複雜度儘量小


96.08年中興校園招聘筆試題
1.編寫strcpy 函式
已知strcpy 函式的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字串,strSrc 是源字串。
不呼叫C++/C 的字串庫函式,請編寫函式 strcpy。

 

----------------

1.關於本微軟等公司資料結構+演算法面試100題系列V0.1版的鄭重宣告
http://blog.csdn.net/v_JULY_v/archive/2010/12/02/6050133.aspx
2.完整100題,請參見,
[珍藏版]微軟等資料結構+演算法面試100題全部出爐[100題首次完整亮相]
http://blog.csdn.net/v_JULY_v/archive/2010/12/06/6057286.aspx
3.更多詳情,請參見,本人部落格:
My Blog:
http://blog.csdn.net/v_JULY_v
4.所有的資源(題目+答案)下載地址:
http://v_july_v.download.csdn.net/
5.本微軟等100題系列V0.1版,永久維護(網友,思路回覆)地址:
http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html

有問題,歡迎留言或來信。聯絡方式,見本部落格公告欄。

 

作者宣告:

本人July對本部落格所有任何內容和資料享有版權,轉載請註明作者本人July及出處。

永遠,向您的厚道致敬。謝謝。July、二零一零年十二月三十日。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述