劍指Offer 替換空格

題目描述

請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。

解法1

這道題比較簡單,就是遍歷該字符串每一個字符進行復制,遇到空格就複製成%20。或者你也可以直接用C#自帶的Replace函數,那這道題也就完全沒有意義了。

實現代碼

public string replaceSpace(string str)
{
    string result = "";
    for(int i = 0; i < str.Length; i++)
    {
        if(str[i] == ' ')
        {
            result = result + "%20";
        }
        else
        {
            result = result + str[i];
        }
    }
    return result;
}

解法2

解法2相比於解法1,優化的地方僅是針對C#語言,使用string類型字符串,一旦創建就不可修改大小。類似str += ""這樣的操作都會創建新的對象而造成額外的內存開銷。所以使用StringBuilder可以提升性能。
優化後效果:

  • 解法1的運行時間爲37ms,佔用內存3384k
  • 解法2的運行時間爲34ms,佔用內存3360k

實現代碼

public string replaceSpaceOptimize(string str)
{
    System.Text.StringBuilder result = new System.Text.StringBuilder();
    for (int i = 0; i < str.Length; i++)
    {
        if (str[i] == ' ')
        {
            result.Append("%20");
        }
        else
        {
            result.Append(str[i]);
        }
    }
    return result.ToString();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章