【劍指Offer】替換空格

 

 

 

題目描述

請實現一個函數,將一個字符串中的每一個空格替換成「%20」。例如,當字符串爲We Are Happy.則通過替換以後的字符串爲We%20Are%20Happy。app

解法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();
}
相關文章
相關標籤/搜索