關於一道面試題,使用C 實現字串反轉演算法

2021-09-07 22:15:09 字數 2151 閱讀 4585

關於一道面試題,使用c#實現字串反轉演算法。

題目見

詳細內容如下:

[c-sharp]view plain

copy

//////使用c#實現字串反轉演算法

/// e.g. 輸入"12345", 輸出"54321"

///請使用你認為的最優演算法

///  

///input string

///output string

public

static

string reverse(string str)    

這兩周看到了很多同學的回答,這裡給出一些自己的建議,希望能對各位同學有用。

常見問題:

1. 面試演算法題慣例是寫乙個函式,所以如果是在main函式中完成的,或者只是將接受的字串倒序輸出的,可以說沒有函式的思維,基本肯定over.

比如下面這種:

[c-sharp]view plain

copy

static

void main(string args)  

console.readline();  

}  

2. 同上,很多同學在方法中進行輸入和輸出,這個還是沒有函式的思維。最簡單的道理,大多數功能性函式的功能就是通過引數返回結果,類似上面的**,如果其他開發人員是在web應用程式中呼叫這個函式,你的結果卻是在控制台輸出,那誰能看見結果呢?而且我只是說要輸出的字串,沒說要輸出啊,你這都輸出了,呼叫者如果想自己控制輸出怎麼辦?(除非是做某些測試有時會在方法裡進行輸出到log),在面試中如果寫出這樣的**基本也over.

3. 對引數的檢查。這個不是最重要的,但很重要。演算法題按慣例是要對引數的進行一些必要的檢查的(如果是面試測試人員,對細節的考察就更重要了),而且請注意,我們可以丟擲異常,讓呼叫者來決定如何處理異常。

4. 一般大公司的面試演算法題,很少會讓你呼叫類庫的函式的(預設值)。這個題目如果就是呼叫array.reverse()完成的,肯定over。

最後,這道題目考察的其實就是很多人容易犯的錯誤,也是c#面試中的乙個常見考點:string類與stringbuilder類的區別。所以只要****現在迴圈中string類的物件疊加的**,基本over。

比如下面這種:

[c-sharp]view plain

copy

static

string reverse(string str)  

return strreturn;  

}  

當使用stringbuilder時,請注意,應在構造stringbuilder物件時指明初始容量,否則預設容量是16個字元,當由於追加字元而超出預設容量時,就會分配乙個新的串緩衝區,大小是原緩衝區的兩倍。

[c-sharp]view plain

copy

public

static

string reverse(string str)   

stringbuilder sb = new stringbuilder(str.length);   

for (int index = str.length - 1; index >= 0; index--)   

return sb.tostring();   

}  

有些同學使用char陣列,我認為也可

[c-sharp]view plain

copy

public

static

string reverse(string str)   

char chars = str.tochararray();  

int begin = 0;  

int end = chars.length - 1;  

char tempchar;  

while (begin < end)  

string strresult = new

string(chars);  

return strresult;   

}  

批改題目時部分同學的評判有誤,請見諒!

這裡有更詳盡的**,請參考

一道c 面試題

float a 1.0f cout int a endl cout int a endl int a 是什麼意思?cout boolalpha int a int a endl float b 0.0f cout int b endl cout int b endl cout boolalpha i...

一道字串複製的面試題目

很多技術筆試都考字串複製函式的編寫 不能用那個庫函式 有人說說這個函式的考點在 和編寫的時候要注意的問題嗎?最好能有編寫嚴謹的例程。函式宣告 char strcpy char strdest,const char strsrc 目前為止,我總結出 1,考察strdest和strsrc非空 2,考察s...

一道字串複製的面試題目

很多技術筆試都考字串複製函式的編寫 不能用那個庫函式 有人說說這個函式的考點在 和編寫的時候要注意的問題嗎?最好能有編寫嚴謹的例程。函式宣告 char strcpy char strdest,const char strsrc 目前為止,我總結出 1,考察strdest和strsrc非空 2,考察s...