成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#算法實現字符串反轉淺析

開發 后端 算法
C#算法實現字符串反轉是程序員面試和基礎學習中經常碰到的問題,那么C#算法實現字符串反轉的具體方法是什么呢?本文就向你介紹這方面的內容。

讓我們來看看C#算法實現字符串反轉的一道面試題,使用C#實現字符串反轉算法。

C#算法實現字符串反轉詳細內容如下:

  1. ///<summary>     
  2. ///使用C#字符串反轉算法     
  3. /// e.g. 輸入"12345", 輸出"54321"     
  4. ///請使用你認為的最優算法     
  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#字符串反轉算法  
  14. /// e.g. 輸入"12345", 輸出"54321"  
  15. ///請使用你認為的最優算法  
  16. ///</summary>  
  17. ///<param name="s">input string</param>  
  18. ///<returns>output string</returns>  
  19. public static string Reverse(string str)  
  20. {  
  21.  

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

C#算法實現字符串反轉常見問題:

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

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

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

最后,這道題目考察的其實就是很多人容易犯的錯誤,也是C#面試中的一個常見考點:String類與StringBuilder類的區別。所以只要代碼中出現在循環中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時,請注意,應在構造StringBuilder對象時指明初始容量,否則默認容量是16個字符,當由于追加字符而超出默認容量時,就會分配一個新的串緩沖區,大小是原緩沖區的兩倍。

C#算法實現字符串反轉參考答案:

  1. public static string Reverse(string str)      
  2. {      
  3.     if (string.IsNullOrEmpty(str))      
  4.     {      
  5.         throw new ArgumentException("參數不合法");      
  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("參數不合法");   
  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數組,我認為也可

  1. public static string Reverse(string str)      
  2. {      
  3.     if (string.IsNullOrEmpty(str))      
  4.     {      
  5.         throw new ArgumentException("參數不合法");      
  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("參數不合法");   
  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#算法實現字符串反轉的基本情況就向你介紹到這里,希望通過一道試題使你了解C#字符串反轉算法的使用和C#算法。

【編輯推薦】

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

2009-09-01 17:50:23

C#截取字符串

2009-09-02 13:41:57

C#字符串操作

2009-08-21 16:37:54

C#客戶端程序

2009-08-21 16:27:44

C#服務端程序

2009-09-03 18:45:06

GridView格式化

2009-08-20 14:31:55

C#正則表達式字符串

2009-08-28 10:50:17

C#字節數組轉換成字符

2009-08-06 16:01:09

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 17:06:37

C#字符串

2009-08-26 13:24:54

C#字符串

2009-08-07 13:50:11

C#字符串

2009-08-24 13:04:44

操作步驟C#字符串

2016-12-30 13:32:24

字符串算法代碼

2009-08-07 14:46:59

C#匹配字符串

2009-07-16 17:01:09

Swing字符串

2009-08-11 13:54:54

約瑟夫環算法C#算法

2009-09-02 16:21:20

C#字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 红桃成人在线 | 欧美456| 亚洲最大的成人网 | 99国内精品久久久久久久 | 亚洲大片 | 日本在线播放一区二区 | 国产成人91视频 | 日韩精品无码一区二区三区 | 国产日韩欧美在线观看 | 成人中文字幕在线 | 国产精品999 | 精品一区二区三区中文字幕 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 欧美日本一区二区 | 婷婷色在线播放 | 九九热精品视频 | 免费一区 | 中文字幕91| 日本不卡一区二区三区 | 亚洲欧美综合精品另类天天更新 | 精品亚洲一区二区三区 | 精品欧美一区二区三区久久久 | 一区二区成人 | 日韩欧美国产一区二区三区 | 国产福利在线播放 | 日日做夜夜爽毛片麻豆 | 草比网站 | 亚洲欧美在线一区 | 婷婷国产一区 | 国产欧美三区 | 久久亚洲国产 | 欧美在线a | 伊人春色成人 | 狠狠操狠狠操 | 亚洲女人天堂成人av在线 | 久久精品国产精品青草 | 国产电影一区二区三区爱妃记 | 国产精品视频一二三区 | 欧美大片一区二区 | 久久精品国产免费 | 日韩在线免费看 |