既然是牛客网的题那当然有牛客网的题目的题目链接啦!
倒置字符串__牛客网
链接:倒置字符串__牛客网 ?
题目要求
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
那么我们先整理一下思路怎么写吧!
?这么看来是不是很简单了呢?
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char* left, char* right)
{
assert(left && right);
while (left<right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char arr[100] = { 0 };//题目要求长度不超过100
gets(arr);//因为scanf接受不了空格,所以用gets
int len = strlen(arr);
//逆序以空格分割的符号
char* start = arr;
char* end = start;
while (*end != '\0')
{
//得到空格之前的字符串
while (*end != ' ' && *end != '\0')
{
end++;
}
reverse(start, end - 1);//实现字符串之间的交换
if (*end == '\0')
{
start = end;
}
else
{
start = end+1;
}
end = start;
}
//逆序整个字符串
reverse(arr, arr + len - 1);
//打印
printf("%s\n", arr);
return 0;
}
|