⾯试题01.03.URL化
简单
URL化。编写⼀种⽅法,将字符串中的空格全部替换为%20。假定该字符串尾部有⾜够的空间存放新增字符,并且知道字符串的“真实”长度。(注:⽤Java实现的话,请使⽤字符数组实现,以便直接在数组上操作。)
⽰例 1:
输⼊:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
⽰例 2:
输⼊:" ", 5
输出:"%20%20%20%20%20"
提⽰:
1. 从尾到头开始修改字符串通常最容易。
2. 你可能需要知道空格的数量。你能数⼀下吗?
解答
解法⼀:利⽤StringBuilder
public string ReplaceSpacesV2(string S, int length)
{
StringBuilder strBuilder = new StringBuilder(length); // 初始化给了部分空间,防⽌后续增加空间
//逐渐遍历字符串
for (int i = 0; i < length; i++)
{
//如果不是空格就加⼊到StringBuilder中,如果是空格
/
/就把"%20"加⼊到StringBuilder中
if (S[i] == ' ')
strBuilder.Append("%20");
else
strBuilder.Append(S[i]);
}
return strBuilder.ToString();
}
解法⼆:反向遍历替换插⼊数组
public string ReplaceSpaces(string S, int length)
{
char[] chars = new char[S.Length]; // 空间肯定够⽤,题⽬中了说了⾜够
int index = S.Length - 1;
for (int i = length - 1; i >= 0; i--)
{
//如果遇到空格就把他转化为"%20"
if (S[i] == ' ')
{
chars[index--] = '0';
chars[index--] = '2';
chars[index--] = '%';
}
else
字符串截取后面三位{
chars[index--] = S[i];
}
}
return new String(chars, index + 1, chars.Length - index - 1);
}
解法三:内置函数⼀⾏流
public string ReplaceSpaces(string S, int length)
{
return S.Substring(0,length).Replace(" ", "%20");
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论