自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#算法實現(xiàn)字符串反轉(zhuǎn)淺析

開發(fā) 后端 算法
C#算法實現(xiàn)字符串反轉(zhuǎn)是程序員面試和基礎(chǔ)學(xué)習(xí)中經(jīng)常碰到的問題,那么C#算法實現(xiàn)字符串反轉(zhuǎn)的具體方法是什么呢?本文就向你介紹這方面的內(nèi)容。

讓我們來看看C#算法實現(xiàn)字符串反轉(zhuǎn)的一道面試題,使用C#實現(xiàn)字符串反轉(zhuǎn)算法。

C#算法實現(xiàn)字符串反轉(zhuǎn)詳細(xì)內(nèi)容如下:

  1. ///<summary>     
  2. ///使用C#字符串反轉(zhuǎn)算法     
  3. /// e.g. 輸入"12345", 輸出"54321"     
  4. ///請使用你認(rèn)為的最優(yōu)算法     
  5. ///</summary>     
  6. ///<param name="s">input string</param>     
  7. ///<returns>output string</returns>     
  8. public static string Reverse(string str)     
  9. {     
  10.     
  11. }    
  12. ///<summary>  
  13. ///使用C#字符串反轉(zhuǎn)算法  
  14. /// e.g. 輸入"12345", 輸出"54321"  
  15. ///請使用你認(rèn)為的最優(yōu)算法  
  16. ///</summary>  
  17. ///<param name="s">input string</param>  
  18. ///<returns>output string</returns>  
  19. public static string Reverse(string str)  
  20. {  
  21.  

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

C#算法實現(xiàn)字符串反轉(zhuǎn)常見問題:

1. 面試算法題慣例是寫一個函數(shù),所以如果是在Main函數(shù)中完成的,或者只是將接受的字符串倒序輸出的,可以說沒有函數(shù)的思維,基本肯定over.

比如下面這種: 

  1. static void Main(string[] args)     
  2. {     
  3.     Console.WriteLine("請輸入一個字符串!");     
  4.     string sString = Console.ReadLine();     
  5.     for (int i = sString.Length - 1; i >= 0; i--)     
  6.     {     
  7.         Console.Write(sString.Substring(i, 1));     
  8.     }     
  9.     Console.ReadLine();     
  10. }    
  11. static void Main(string[] args)  
  12. {  
  13.     Console.WriteLine("請輸入一個字符串!");  
  14.     string sString = Console.ReadLine();  
  15.     for (int i = sString.Length - 1; i >= 0; i--)  
  16.     {  
  17.         Console.Write(sString.Substring(i, 1));  
  18.     }  
  19.     Console.ReadLine();  

2. 同上,很多同學(xué)在方法中進(jìn)行輸入和輸出,這個還是沒有函數(shù)的思維。最簡單的道理,大多數(shù)功能性函數(shù)的功能就是通過參數(shù)返回結(jié)果,類似上面的代碼,如果其他開發(fā)人員是在Web應(yīng)用程序中調(diào)用這個函數(shù),你的結(jié)果卻是在控制臺輸出,那誰能看見結(jié)果呢?而且我只是說要輸出的字符串,沒說要輸出啊,你這都輸出了,調(diào)用者如果想自己控制輸出怎么辦?(除非是做某些測試有時會在方法里進(jìn)行輸出到Log),在面試中如果寫出這樣的代碼基本也over.

3. 對參數(shù)的檢查。這個不是最重要的,但很重要。算法題按慣例是要對參數(shù)的進(jìn)行一些必要的檢查的(如果是面試測試人員,對細(xì)節(jié)的考察就更重要了),而且請注意,我們可以拋出異常,讓調(diào)用者來決定如何處理異常。

4. 一般大公司的面試算法題,很少會讓你調(diào)用類庫的函數(shù)的(默認(rèn)值)。這個題目如果就是調(diào)用Array.Reverse()完成的,肯定over。

最后,這道題目考察的其實就是很多人容易犯的錯誤,也是C#面試中的一個常見考點:String類與StringBuilder類的區(qū)別。所以只要代碼中出現(xiàn)在循環(huán)中string類的對象疊加的代碼,基本over。

比如下面這種:

  1. static string Reverse(string str)     
  2. {     
  3.     string strReturn = "";     
  4.     foreach (char c in str)     
  5.     {     
  6.         strReturn = c + strReturn;     
  7.     }     
  8.     return strReturn;     
  9. }    
  10. static string Reverse(string str)  
  11. {  
  12.     string strReturn = "";  
  13.     foreach (char c in str)  
  14.     {  
  15.         strReturn = c + strReturn;  
  16.     }  
  17.     return strReturn;  
  18. }  

當(dāng)使用StringBuilder時,請注意,應(yīng)在構(gòu)造StringBuilder對象時指明初始容量,否則默認(rèn)容量是16個字符,當(dāng)由于追加字符而超出默認(rèn)容量時,就會分配一個新的串緩沖區(qū),大小是原緩沖區(qū)的兩倍。

C#算法實現(xiàn)字符串反轉(zhuǎn)參考答案:

  1. public static string Reverse(string str)      
  2. {      
  3.     if (string.IsNullOrEmpty(str))      
  4.     {      
  5.         throw new ArgumentException("參數(shù)不合法");      
  6.     }      
  7.     
  8.     StringBuilder sb = new StringBuilder(str.Length);      
  9.     for (int index = str.Length - 1; index >= 0; index--)      
  10.     {      
  11.         sb.Append(str[index]);      
  12.     }      
  13.     return sb.ToString();      
  14. }    
  15. public static string Reverse(string str)   
  16. {   
  17.     if (string.IsNullOrEmpty(str))   
  18.     {   
  19.         throw new ArgumentException("參數(shù)不合法");   
  20.     }   
  21.  
  22.     StringBuilder sb = new StringBuilder(str.Length);   
  23.     for (int index = str.Length - 1; index >= 0; index--)   
  24.     {   
  25.         sb.Append(str[index]);   
  26.     }   
  27.     return sb.ToString();   

有些同學(xué)使用char數(shù)組,我認(rèn)為也可

  1. public static string Reverse(string str)      
  2. {      
  3.     if (string.IsNullOrEmpty(str))      
  4.     {      
  5.         throw new ArgumentException("參數(shù)不合法");      
  6.     }     
  7.     
  8.     char[] chars = str.ToCharArray();     
  9.     int begin = 0;     
  10.     int end = chars.Length - 1;     
  11.     char tempChar;     
  12.     while (begin < end)     
  13.     {     
  14.         tempChar = chars[begin];     
  15.         chars[begin] = chars[end];     
  16.         chars[end] = tempChar;     
  17.         begin++;     
  18.         end--;     
  19.     }     
  20.     
  21.     string strResult = new string(chars);     
  22.     
  23.     return strResult;      
  24. }    
  25. public static string Reverse(string str)   
  26. {   
  27.     if (string.IsNullOrEmpty(str))   
  28.     {   
  29.         throw new ArgumentException("參數(shù)不合法");   
  30.     }  
  31.  
  32.     char[] chars = str.ToCharArray();  
  33.     int begin = 0;  
  34.     int end = chars.Length - 1;  
  35.     char tempChar;  
  36.     while (begin < end)  
  37.     {  
  38.         tempChar = chars[begin];  
  39.         chars[begin] = chars[end];  
  40.         chars[end] = tempChar;  
  41.         begin++;  
  42.         end--;  
  43.     }  
  44.  
  45.     string strResult = new string(chars);  
  46.  
  47.     return strResult;   

C#算法實現(xiàn)字符串反轉(zhuǎn)的基本情況就向你介紹到這里,希望通過一道試題使你了解C#字符串反轉(zhuǎn)算法的使用和C#算法。

【編輯推薦】

  1. 簡單介紹C#預(yù)處理
  2. 介紹C#中的值類型
  3. C#算法巧解八皇后問題淺析
  4. C#算法解決張老師的生日問題
  5. C#算法解決的一道面試題
責(zé)任編輯:仲衡 來源: CSDN博客
相關(guān)推薦

2009-09-01 17:50:23

C#截取字符串

2009-09-02 13:41:57

C#字符串操作

2009-08-21 16:27:44

C#服務(wù)端程序

2009-08-21 16:37:54

C#客戶端程序

2009-09-03 18:45:06

GridView格式化

2009-08-20 14:31:55

C#正則表達(dá)式字符串

2016-12-30 13:32:24

字符串算法代碼

2009-08-07 14:46:59

C#匹配字符串

2009-08-26 13:24:54

C#字符串

2009-08-24 17:06:37

C#字符串

2009-08-07 14:15:21

C#字符串分割

2009-08-07 14:22:56

C#字符串搜索

2009-08-07 14:34:33

C#模式字符串

2009-08-24 13:04:44

操作步驟C#字符串

2009-08-07 13:50:11

C#字符串

2009-08-06 16:01:09

C#字符串函數(shù)大全

2009-08-28 10:50:17

C#字節(jié)數(shù)組轉(zhuǎn)換成字符

2009-07-16 17:01:09

Swing字符串

2009-08-28 10:39:37

C#數(shù)值字符串

2009-08-07 15:58:54

C#字符串插入html
點贊
收藏

51CTO技術(shù)棧公眾號