HJ31 单词倒排
创始人
2025-05-31 00:44:52

描述

对字符串中的所有单词进行倒排。

说明:
1、构成单词的字符只有26个大写或小写英文字母;
2、非构成单词的字符均视为单词间隔符;
3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
4、每个单词最长20个字母;

数据范围:字符串长度满足 1≤n≤10000
输入描述
输入一行,表示用来倒排的句子

输出描述
输出句子的倒排结果

示例1

输入:
I am a student
输出:
student a am I

示例2

输入:
$bo*y gi!r#l
输出:
l r gi y bo

实现

#include 
#include 
#include 
#include 
#include bool isCharNum(char c)
{if (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')))return true;elsereturn false;
}
int main() {char c;int sLen = 0;char s[10001][21] = {0};while (1) {int ret = scanf("%[^ \n]%c", s[sLen], &c);// printf("s: %s, len: %d, c: 0x%02x[0x%02x, 0x%02x], ret: %d\n", s[sLen], sLen, c, ' ', '\n', ret);sLen++;if (c == '\n') {break;}}// for (int i = 0; i < sLen; i++) {//     printf("%s ", s[i]);// }// printf("\n");for (int i = 0; i < sLen; i++) {int s1Len = strlen(s[i]);// printf("s: %s, len: %d\n", s[i], s1Len);for (int j = 0; j < s1Len; j++) {if (!isCharNum(s[i][j])) {s[i][j] = ' ';}}// printf("result = s: %s, len: %d\n", s[i], s1Len);}// for (int i = 0; i < sLen; i++) {//     printf("%s ", s[i]);// }// printf("\n");for (int i = sLen - 1; i >= 0; i--) {int s1Len = strlen(s[i]);char *pBuf = NULL;int m = -1;int cnt = 0;while ((pBuf = strrchr(s[i], ' ')) != NULL) {int curS1Len = strlen(s[i]);m = pBuf - s[i];// printf("pBuf: 0x%02x[0x%02x]. m = %d[%d]\n", *pBuf, '\0', m, curS1Len);if ((m + 1) != curS1Len) {  // 找到的' '不是字符串结尾printf("%s ", pBuf + 1);}m = pBuf - s[i];s[i][m] = '\0';  // 将' '换成结束符// printf("s: %s, len: %d\n", s[i], strlen(s[i]));}printf("%s ", s[i]); // 跳出while,说明没有' ',打印最后的字符串}printf("\n");
}

相关内容

热门资讯

阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
荼蘼什么意思 岁月缱绻葳蕤生香... 感谢作者【辰夕】的原创独家授权分享编辑整理:【多肉植物百科】百科君坐标:云南 曲靖春而至,季节流转,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...