当前位置:网站首页>One question per day - replace spaces
One question per day - replace spaces
2022-07-05 08:28:00 【Protect Xiaozhou】
Hello, everyone , I'm protecting Xiao Zhou ღ, This issue brings you an exercise on Niuke online —— Replace blank space , Bloggers share two ways to solve problems ( A link to this question is attached at the end ), Let's have a look ~

The topic comes from niuke.com

describe
Please implement a function , Put a string s Replace each space in with “%20”.
for example , When the string is We Are Happy. The replaced string is We%20Are%20Happy.
Data range :0 <=strlen(s) <=1000. Ensure that the characters in the string are capitalized English letters 、 One of lowercase letters and spaces .
Example 1
Input :
"We Are Happy"Return value :
"We%20Are%20Happy"
Example 2
Input :
" "Return value :
"%20"
Thinking analysis :

Title main information :
- Put a string s Replace each space in with “%20”;
- Ensure that the characters in the string are capitalized English letters 、 One of lowercase letters and spaces ;
Defines an array of characters ch[N], Or define a dynamically opened character array , We can take traversal strings s To determine the position of the space , Put the character before the space s The value of one to one is given to the character array we define ch, When spaces are encountered , take ch The values of spaces and the next two spaces are replaced by '%','2','0'. until character string s End flag encountered ‘\0’ until .
Program realization :
Array approach :
#include<stdio.h>
#include<string.h>
char* replaceSpace(char* s)
{
// Because the array is opened on the stack area , Function end stack frame destroy , So want to use static Modify the array , Avoid function end , Array destroy
static char ch[50] = { 0 };
for (int i = 0,j = 0; s[i] != '\0'; i++, j++)
{
if (s[i] != ' ')
{
ch[j] = s[i];
}
else if (s[i] == ' ')
{
ch[j] = '%';
ch[j + 1] = '2';
ch[j + 2] = '0';
j += 2;//j Follow i Keep in sync
}
}
s = ch;
// Return the pointer type according to the requirements of the topic
return s;
}
int main()
{
char arr[50] = {0};
gets(arr);
// Replace blank space
char *str=replaceSpace(arr);
printf("%s\n",str);
return 0;
}
Dynamic development practices :
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char* replaceSpace(char* s)
{
// write code here
int N = strlen(s);// Calculate string length
char tmp[] = { '%', '2', '0' };// replace content
int space = 0;// Calculate the number of spaces
for(int i=0;i<N;++i)
{
if (s[i]==' ')
{
++space;
}
}
int Len = N + space * 2;
// The function of dynamically opening up space on the heap ends , Will not actively destroy
char* str =(char*)malloc(Len*sizeof(char));
if (str == NULL)// If dynamic development fails , End procedure
return;
// Traversal string s
int i = 0;
while (*s)
{
if (*s == ' ')
{
int n = 0;
while (n < 3)
{
str[i] = tmp[n];
++i;
++n;
}
}
else
{
str[i] = *s;
++i;
}
++s;
}
return str;
}
int main()
{
char arr[50] = {0};
gets(arr);
// Replace blank space
char *str=replaceSpace(arr);
printf("%s\n",str);
return 0;
}Three spaces

Pay attention to :
- The return type of this question is char*
- If you define character array storage , The array is opened on the stack area of memory , Function end stack frame destroy , That is, the space opened up is recycled by the operating system , here , We take this array address as the return value , It will cause illegal access to memory , So we should use static Decorate the array , Let the array become a static global variable , It will not be destroyed because the function ends .
- Can be used to malloc() Open up a space on the heap of memory for storage , In addition to our initiative in the space on the heap free() Release and program end are recycled by the operating system , It will not be destroyed for other reasons .
If you don't know anything about dynamic memory, you can learn another blog of the blogger :C Language —— Dynamic memory
Interested friends can click on the link to try to use the blogger's method , Or do it in your own way .
The title comes from : Cattle from
link : Replace blank space _ Niuke Tiba _ Cattle from
Thank you for watching this article , Please look forward to : Protect Xiao Zhou ღ

If there is infringement, please contact to modify and delete !
边栏推荐
- Array integration initialization (C language)
- Example 002: the bonus paid by the "individual income tax calculation" enterprise is based on the profit commission. When the profit (I) is less than or equal to 100000 yuan, the bonus can be increase
- DokuWiki deployment notes
- Count the number of inputs (C language)
- Explain task scheduling based on Cortex-M3 in detail (Part 1)
- 【三层架构】
- Keil use details -- magic wand
- Sword finger offer 09 Implementing queues with two stacks
- STM32 single chip microcomputer - external interrupt
- 动力电池UL2580测试项目包括哪些
猜你喜欢

On boost circuit

OC and OD gate circuit

Charge pump boost principle - this article will give you a simple understanding

Matlab2018b problem solving when installing embedded coder support package for stmicroelectronic

Installation and use of libjpeg and ligpng

leetcode - 445. Add two numbers II

Sword finger offer 05 Replace spaces

实例006:斐波那契数列

leetcode - 445. 两数相加 II

Negative pressure generation of buck-boost circuit
随机推荐
Explain task scheduling based on Cortex-M3 in detail (Part 1)
Working principle and type selection of common mode inductor
MySQL MHA high availability cluster
Negative pressure generation of buck-boost circuit
STM32 --- NVIC interrupt
Soem EtherCAT source code analysis II (list of known configuration information)
实例004:这天第几天 输入某年某月某日,判断这一天是这一年的第几天?
Solutions to compilation warnings in Quartus II
General makefile (I) single C language compilation template
Problem solving: interpreter error: no file or directory
Vofa+ software usage record
Sql Server的存儲過程詳解
[trio basic tutorial 18 from introduction to proficiency] trio motion controller UDP fast exchange data communication
Buildroot system for making raspberry pie cm3
亿学学堂给的证券账户安不安全?哪里可以开户
Shell script
WiFi wpa_ Detailed description of supplicant hostpad interface
[nas1] (2021cvpr) attentivenas: improving neural architecture search via attentive sampling (unfinished)
Simple design description of MIC circuit of ECM mobile phone
Several important parameters of LDO circuit design and type selection