当前位置: 首页 > news >正文

HJ31 单词倒排

描述

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

说明:
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 <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>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");
}
http://www.lryc.cn/news/41070.html

相关文章:

  • leetcode——203.移除链表元素
  • GPT-4来袭:开启人工智能新时代
  • 芯微电子IPO终止:业绩开始大幅下滑,王日新、王苟新兄弟不同命
  • 【C++】用手搓的红黑树手搓set和map
  • 【C++】空指针弃NULL用nullptr
  • 【selenium学习】数据驱动测试
  • 嵌入式硬件电路设计的基本技巧
  • Spring MVC 图片的上传和下载
  • 远程工具神器之MobaXterm (小白必看)
  • VRIK+Unity XR Interaction Toolkit 实现VR上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)
  • 【C++进阶】map的介绍和使用
  • 第十四届蓝桥杯三月真题刷题训练——第 15 天
  • HTML5是什么?怎么学习HTML5?
  • 个人算法题精简导航整理(精炼汇总,含知识点、模板题、题单)
  • Mac 和 Win,到底用哪个系统学编程?
  • 文心一言---中国版的“ChatGPT”狂飙的机会或许要出现了
  • 2023最全Python+Selenium环境搭建教程-你绝对想不到有这么简单!
  • JavaSe第10次笔记
  • 【C语言笔记】自定义类型全解
  • 文心一言硬刚ChatGPT。文心一言能否为百度止颓?中国版ChatGPT“狂飙”的机会在哪儿?
  • 【RabbitMQ笔记10】消息队列RabbitMQ之死信队列的介绍
  • Python04 数据序列-字符串
  • Redis限流接口防刷
  • Yarn 资源调度器
  • 通达信 34日上升三角形主图源码
  • CSDN周赛第37期题解(Python版)
  • 程序调试方法
  • 【Android入门到项目实战--2.3】—— 活动的四种启动模式(standard、singleTop、singleTask、singleInstance)
  • SpringCloud微服务技术栈.黑马跟学(三)
  • 学习Java——集合类