题解 | #单词倒排#

方法一:单词原地逆序
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void reverse(char* pa, char* pb)
{

	while (pa < pb)
	{
		char temp = *pa;
		*pa = *pb;
		*pb = temp;
		pa++;
		pb--;
	}
}
int main()
{
	char ch[10000] = { 0 };
	gets(ch);
	int x = 0, y = 0;
	int n = strlen(ch);
	for (int i = 0; i < n; i++)
	{
		if (isalpha(ch[i]))//寻找每个单词的首字母
		{
			x = i;//用x记录首字母位置
			y = i;//用y接收i,继而寻找该字母的尾字母的位置
			while (isalpha(ch[y]))
			{
				y++;
			}
			--y;//找到尾字母的位置
			reverse(&ch[x], &ch[y]);//对该单词进行逆置
			i = y;//将遍历因子的位置改为y的位置,下次遍历位置会从该尾字母后开始
		}
	}
	for (int i = n - 1; i >= 0; i--)//从后向前遍历,打印所有单词
	{
		if (isalpha(ch[i]))
		{
			printf("%c", ch[i]);
		}
		else
		{
			printf(" ");
		}
	}
	return 0;
}
方法二:直接打印
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
    char ch[1000] = { 0 };
    gets(ch);
    int i;
    for (i = strlen(ch) - 1; i >= 0; i--)
    {
        if (!isalpha(ch[i]))
        {
            printf("%s", &ch[i + 1]);
            ch[i] = '\0';//为下一次的打印创造条件
            printf(" ");
        }
    }
    printf("%s", ch);
    return 0;
}
该题库类似题目:HJ13--句子逆序
这是俺的题解链接🤔
全部评论

相关推荐

身边有人上海、深圳&nbsp;6、7k&nbsp;都去了,真就带薪上班了。
小浪_coder:深圳除了一些计算机,UI设计,金融类等一些可以月薪过万的工作之外, 认识很多朋友做运营,营销,文员的工作, 月薪基本都在4-6K左右,还有大把人在干
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 11:27
点赞 评论 收藏
分享
白火同学:只是实习的话,你这份简历应该也差不多了。真要优化的话,因为面实习的话,没有开发经验,面试更重视技术栈水平。 1、重视JavaSE的基础吧,集合、泛型算是比较基础的基础,多线程、反射、JVM内存模型才是基础; 2、技术栈写到具体的点,比如Elasticsearch的使用写到某个点,限制面试官自由发挥,防止问了相关问题最后又答不上,如果真没把握建议不写,降低面试官的心理预期; 3、技术栈不要重复,比如技术栈第二条和第八条可以合并改为“熟悉Redis中间件,包括基本数据结构、缓存策略、持久化机制,了解缓存三剑客及其解决方案,并有相关项目经验。”; 4、项目指标量化,比如“达到xx秒的响应速度”(不过这个就有点偏校招社招的要求了,实习简历不写也无伤大雅)。
点赞 评论 收藏
分享
07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 18:25
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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