当前位置:网站首页>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 !
边栏推荐
- Classic application of MOS transistor circuit design (1) -iic bidirectional level shift
- The firmware of the connected j-link does not support the following memory access
- Brief discussion on Buck buck circuit
- Installation and use of libjpeg and ligpng
- 实例009:暂停一秒输出
- MySQL之MHA高可用集群
- 剑指 Offer 09. 用两个栈实现队列
- Solutions to compilation warnings in Quartus II
- DokuWiki deployment notes
- 【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)
猜你喜欢
Negative pressure generation of buck-boost circuit
[cloud native | learn kubernetes from scratch] III. kubernetes cluster management tool kubectl
[trio basic tutorial 17 from getting started to mastering] set up and connect the trio motion controller and input the activation code
How to copy formatted notepad++ text?
STM32 summary (HAL Library) - DHT11 temperature sensor (intelligent safety assisted driving system)
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
实例002:“个税计算” 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.
MATLAB小技巧(28)模糊综合评价
Stablq of linked list
Various types of questions judged by prime numbers within 100 (C language)
随机推荐
Live555 push RTSP audio and video stream summary (I) cross compilation
Example 003: a complete square is an integer. It is a complete square after adding 100, and it is a complete square after adding 168. What is the number?
Ble encryption details
Slist of linked list
Bluetooth hc-05 pairing process and precautions
[trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc
Array integration initialization (C language)
DokuWiki deployment notes
Vofa+ software usage record
剑指 Offer 05. 替换空格
实例009:暂停一秒输出
Why is 1900 not a leap year
Adaptive filter
關於線性穩壓器的五個設計細節
NTC thermistor application - temperature measurement
Sword finger offer 06 Print linked list from end to end
Design a clock frequency division circuit that can be switched arbitrarily
Verilog -- state machine coding method
Five design details of linear regulator
The firmware of the connected j-link does not support the following memory access