请实现一个函数,将一个字符串s中的每个空格替换成“%20“。
例如,当字符串为“We Are Happy“.则经过替换之后的字符串为“We%20Are%20Happy“。
数据范围:
。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
string replaceSpace(string s)
{
// write code here
string a;
for(auto& ch:s)
{
if(ch==' ') a.append("%20");
else a+=ch;
}
return a;
} class Solution {
public:
string replaceSpace(string s) {
string res;
for(int i=0;i<s.size();i++)
{
if(s[i]!=' ')
res+=s[i];
else
res+="%20";
}
return res;
}
}; 当然,有时候熟悉应用C++ stl也是一个不错的选择(狗头)
for(int i=0;i<s.size();i++)
{
if(s[i]==' ')
s.replace(i, 1, "%20");//从i位置开始的1个字符替换为%20
}
return s;
char* replaceSpace(char* s ) {
// write code here
char* ret_char = (char *)malloc(strlen(s)*3);
int index = 0;
for(int i = 0; i < strlen(s); i++) {
if(s[i]==' ') {
ret_char[index++] = '%';
ret_char[index++] = '2';
ret_char[index++] = '0';
} else {
ret_char[index++] = s[i];
}
}
return ret_char;
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
public String replaceSpace (String s) {
if (s == null || s.length() == 0)
return "";
int spaceNum = 0;
int m = s.length();
for (int i = 0; i < m; i++) {
char c = s.charAt(i);
if (c == ' ')
spaceNum++;
}
//p1指向原字符串末尾
int p1 = m - 1;
//p2指向替换之后字符串的末尾,spaceNum为空格数,3是"%20"的长度
int p2 = p1 + spaceNum * 2;
char[] tmp = new char[p2+1];
for (int i = 0; i < s.length(); i++)
tmp[i] = s.charAt(i);
//当p1和p2指向同一位置时,说明已经替换完毕
while (p1 >= 0 && p1 != p2) {
if (tmp[p1] == ' ') {
tmp[p2--] = '0';
tmp[p2--] = '2';
tmp[p2--] = '%';
}else {
tmp[p2--] = tmp[p1];
}
p1--;
}
return new String(tmp);
}
} class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
string replaceSpace(string s) {
// write code here
int cnt = 0;//统计空格数
int len = s.length();
for(int i=0;i<len;i++){
if(s[i] == ' ') cnt++;
}
s.resize(len+cnt*2);
int i = len - 1;//指向原字符串最后一个字符
int j = s.length()-1;//指向空格替换成%20后的字符串最后一个字符
for(;i!=j;i--){ //从尾到头替换空格,当i==j时空格替换完毕,无需继续
if(s[i]==' '){
s[j] = '0';
s[j-1] = '2';
s[j-2] = '%';
j -=3;
}
else{
s[j] = s[i];
j--;
}
}
return s;
}
}; class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
string replaceSpace(string s) {
// write code here
int n = s.length();
string s1[n];
string s2;
for (int i = 0; i < n; i++) {
s1[i] = s[i];
}
for (int i = 0; i < n; i++) {
if (s1[i] == " ") {
s1[i] = "%20";
}
}
for (int i = 0; i < n; i++) {
s2 = s2 + s1[i];
}
return s2;
}
}; public class Solution {
// 拼接法
// 时间复杂度: O(n)
// 空间复杂度: O(n)
public String replaceSpace(String s) {
if (s == null || s.isEmpty()) {
return "";
}
char ch;
StringBuilder sb = new StringBuilder(s.length() * 3);
for (int i = 0, n = s.length(); i < n; i++) {
ch = s.charAt(i);
if (ch == ' ') {
sb.append("%20");
} else {
sb.append(ch);
}
}
return sb.toString();
}
} public class Solution {
// 双指针法
// 时间复杂度: O(n)
// 空间复杂度: O(1)
public String replaceSpace(StringBuilder s) {
if (s == null) {
return "";
}
// 计算空格个数
int cnt = 0;
for (int i = 0, n = s.length(); i < n; i++) {
if (s.charAt(i) == ' ') {
cnt++;
}
}
// 确保容量足够
int oldLength = s.length();
int newLength = s.length() + cnt * 2;
s.setLength(newLength);
// 从后往前遍历
char ch;
int i = oldLength - 1, j = newLength - 1;
while (i >= 0) {
ch = s.charAt(i);
if (ch == ' ') {
s.setCharAt(j, '0');
s.setCharAt(j - 1, '2');
s.setCharAt(j - 2, '%');
j = j - 3;
} else {
s.setCharAt(j, ch);
j--;
}
i--;
}
// 返回结果
return s.toString();
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
public String replaceSpace (String s) {
// write code here
StringBuilder sb = new StringBuilder();
char[] chars = s.toCharArray();
for (int i = 0;i < chars.length; i++) {
if (' ' == chars[i]) {
sb.append("%20");
} else {
sb.append(chars[i]);
}
}
return sb.toString();
}
} import java.util.*;
public class Solution {
public String replaceSpace (String s) {
//如果本来就是空字符串那我们返回就好。
if(s==null || s.length()==0) return s;
//使用StringBuilder在遍历过程中构建新的字符串。
StringBuilder builder = new StringBuilder();
char blank = ' ';
for(int i=0;i<s.length();i++){
if(s.charAt(i)!=blank)
builder.append(s.charAt(i));
else
builder.append("%20");
}
return builder.toString();
}
} public string replaceSpace (string s) {
return s.Replace(" ","%20");
}
function replaceSpace( s ) { let result = ''; for(let i = 0;i < s.length;i++) { if(s[i] === ' ') { result += '%20'; } else { result += s[i]; } } return result; }方法二:使用字符串的replace方法,将正则对象作为参数传入replace方法function replaceSpace( s ) { let regx = new RegExp(' ','g'); return s.replace(regx,'%20'); }方法三:将字符串以空格作为分隔符使用split()转成数组,然后对数组使用join()方法function replaceSpace( s ) { return s.split(' ').join('%20'); }方法四:将字符串使用扩展运算符转成数组,然后使用数组的map方法function replaceSpace( s ) { let arr = [...s].map(item => { return item === ' ' ? '%20' : item; }); return arr.join(''); }