剑指 Offer 05. 替换空格
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 05. 替换空格相关的知识,希望对你有一定的参考价值。
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
限制:
0 <= s 的长度 <= 10000
题解1:
/**
* 剑指 Offer 05. 替换空格
*
* @param s 含有空格的字符串
* @return 用 "%20" 替换所有空格后的新串
*/
public String replaceSpace(String s)
/*
* 思路分析:遍历 s 中的每一个字符,利用 StringBuilder 字符串可追加的特点,
* 若 s 中的当前字符不是空格则直接追加到 StringBuilder 尾,如是则追加 %20
*/
StringBuilder stringBuilder = new StringBuilder();
int sLen = s.length();
for (int i = 0; i < sLen; i++)
char ch = s.charAt(i);
if (ch == ' ')
stringBuilder.append("%20");
continue;
stringBuilder.append(ch);
return stringBuilder.toString();
题解2:
/**
* 剑指 Offer 05. 替换空格
*
* @param s 含有空格的字符串
* @return 用 "%20" 替换所有空格后的新串
*/
public String replaceSpace(String s)
/*
* 思路分析:新建一个大小为 s 大小三倍(因为使用 %20 替换空格,最坏情况下所有 s 全是空格)的字符数组,
* 遍历 s 的每一个字符,若是空格,则将字符数组的接连三个元素分别赋值为 %、2、0,否则赋值为 s 的当前字符
* 最终返回由字符数组生成的字符串
*/
int sLen = s.length();
char[] chars = new char[sLen * 3];
int index = 0;
for (int i = 0; i < sLen; i++)
char ch = s.charAt(i);
if (ch == ' ')
chars[index++] = '%';
chars[index++] = '2';
chars[index++] = '0';
continue;
chars[index++] = ch;
return new String(chars, 0, index);
以上是关于剑指 Offer 05. 替换空格的主要内容,如果未能解决你的问题,请参考以下文章