请实现一个函数,将一个字符串s中的每个空格替换成“%20“。
例如,当字符串为“We Are Happy“.则经过替换之后的字符串为“We%20Are%20Happy“。
数据范围:
。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
void SWAP_Space(char* str)
{
char* p = str;
int ln = strlen(str);
int scout = 0;
// 找出空格个数:scout
while (*p)
{
if (*p == ' ')
scout++;
p++;
}
p = str;
// 从末尾开始找空格
int rig = ln + scout * 2 - 1;
int lef = ln - 1;
while (scout)
{
// 没遇到" "
if (*(p + lef) != ' ')
{
p[rig--] = p[lef--];
}
// 遇到 空格
else
{
lef--;
p[rig--] = '0';
p[rig--] = '2';
p[rig--] = '%';
scout--;
}
}
}
int main()
{
char arr[30] = "my baby love.";
SWAP_Space(arr);
printf("交换后:%s\n", arr);
return 0;
} /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
char* replaceSpace(char* s ) {
// write code here
int originalLength = strlen(s); //str字符串长度
int count = 0;
for (int i = 0; i < originalLength; i++) {
if (s[i] == ' ') {
count++;
}
}
int newLength = originalLength + count * 2;
// 分配新的内存来容纳新字符串
char* newString = (char*)malloc(newLength + 1);
if (newString == NULL) {
// 如果内存分配失败,返回NULL
return NULL;
}
// 初始化新字符串的指针
char* p = newString;
while (*s) {
if (*s == ' ') {
*p++ = '%';
*p++ = '2';
*p++ = '0';
} else {
*p++ = *s;
}
s++;
}
*p = '\0';
return newString;
} //C语言发现需要分配很大的预存空间啊!
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
char* replaceSpace(char* s ) {
// write code here
char ans[10000]={0} ;
int i = 0;
while (*s != '\0')
{
if (*s == ' ')
{
ans[i++]= '%';
ans[i++] = '2';
ans[i++] = '0';
}
else
{
ans[i++] = *s;
}
s++;
}
ans[i] = '\0';
return ans;
} /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
char* replaceSpace(char* s ) {
// write code here
int sLen = strlen(s);
int num = 0;
for(int i = 0; i < sLen; i++)
{
if(s[i] == ' ') num++;
}
int rLen = sLen + 2*num;
char *Rets = (char*)malloc(rLen*sizeof(char));
memset(Rets, 0, rLen);
int j = 0;
for(int i = 0; i < sLen; i++)
{
if(s[i] == ' ')
{
Rets[j++] = '%';
Rets[j++] = '2';
Rets[j++] = '0';
}
else Rets[j++] = s[i];
}
return Rets;
} 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;
}
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(''); }