乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       昵稱5709492 2011-02-11

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

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

      1. ///<summary>     
      2. ///使用C#字符串反轉(zhuǎn)算法     
      3. /// e.g. 輸入"12345", 輸出"54321"     
      4. ///請使用你認為的最優(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. ///請使用你認為的最優(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.  

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

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

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

      4. 一般大公司的面試算法題,很少會讓你調(diào)用類庫的函數(shù)的(默認值)。這個題目如果就是調(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. }  

      當使用StringBuilder時,請注意,應在構(gòu)造StringBuilder對象時指明初始容量,否則默認容量是16個字符,當由于追加字符而超出默認容量時,就會分配一個新的串緩沖區(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();   

      有些同學使用char數(shù)組,我認為也可

      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#算法。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多