题解 | #句子逆序#

方法一——原地逆置
思路如例一  I am a boy
step1: 逆序整个字符串,yob a ma I
step2: 遍历字符串,将空格之前的字符串逆序,boy a am I
step3:逆序最后一个空格后的字符串,boy a am I
void reverse(char* p, int x, int y)
{
	while (x < y)
	{
		char temp = *(p + x);
		*(p + x) = *(p + y);
		*(p + y) = temp;
		x++;
		y--;
	}
}
int main()
{
	char ch[1000] = { 0 };
	gets(ch);
	reverse(ch, 0, strlen(ch) - 1);
	int i = 0, j = 0;
	for (; i <= strlen(ch); i++)
	{
		if (ch[i] == ' ' || ch[i] == '\0')
		{
			reverse(ch, j, i - 1);
			j = i + 1;
		}
	}
	puts(ch);
	return 0;
}


方法二——直接打印
思路:如例一  I am a boy
step1:从后向前遍历,将空格后的字符串直接打印,然后将空格位置赋值为字符'\0';
step2:打印最后一个空格前的字符串,也即直接打印源字符串;
int main()
{
    char ch[1000] = { 0 };
    gets(ch);
    int i;
    for (i = strlen(ch) - 1; i >= 0; i--)
    {
        if (ch[i] == ' ')
        {
            printf("%s", &ch[i + 1]);
            ch[i] = '\0';
            printf(" ");
        }
    }
    printf("%s", ch);
    return 0;
}
该题库类似题目:HJ31--单词倒排 链接


全部评论

相关推荐

项目经历怎么增加啊,跟着网上视频做项目能写进简历吗?
小浪_Coding:26届还没实习嘛? 一个项目也不太够, 找实习都难, 秋招没法投
简历中的项目经历要怎么写
点赞 评论 收藏
分享
点赞 评论 收藏
分享
08-10 12:43
临沂大学 Java
等闲_:1,换一个模版,这个模版没有人会看的 2,项目太烂大街了,也太简单了,找AI优化一下描述,项目可以烂大街,但是简历不能烂大街,或者找项目换一下 3,如果没什么奖的话,把学校放到下面,添加一个个人描述,简单些,让简历丰富一些 4,改完之后海投试试,但是我真的很建议别走java了,可以试试前端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务