标签:index 面试题 20 string URL chars int length 01.03
面试题 01.03. URL化 简单
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例 1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
示例 2:
输入:" ", 5
输出:"%20%20%20%20%20"
提示:
- 从尾到头开始修改字符串通常最容易。
- 你可能需要知道空格的数量。你能数一下吗?
解答
解法一:利用 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");
}
标签:index,面试题,20,string,URL,chars,int,length,01.03 来源: https://www.cnblogs.com/fhlsteven/p/15945946.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。