題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%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();
}