PTA 7-32 说反话-加强版

article/2025/9/30 22:45:24

在这里插入图片描述

思路:
读入字符串str,那么用output数组存储每个单词的首字母,及尾字母后一字母在字符串的下标。那么已知这两个数据便可以输出该单词。
考虑到逆序输出的需要,逆序读取字符串。

如字符串”#apple##“(#表示空格),共8个字符
逆序读取
读第1个字符#,不是尾字母后一个也不是首字母,output不变
读第2个字符#,是尾字母后一个,下标6,则output={6}
读第3个字符e,不是尾字母后一个也不是首字母,output不变
.
.
.
读第7个字符e,是首字母,下标1,则output={6,1}
读第8个字符#,不是尾字母后一个也不是首字母,output不变
那么输出str[1-5]便可输出apple
同理对字符串”#ap#le##“,output={6,4,3,1},输出str[4-5],str[1-2]

我对于首字母判断是前有空格,自己不是空格
对尾字母后一字母判断是己为空格,前非空格
这使得首字母的判断对“ap##le#”的a判断失误
尾字母后一字母对不是以空格结尾的字符串"#apple"判断失误
因此在字符串后加上一空格以处理尾字母,对首个字母单独判断
另外,全空格“####”也是特殊情况,特别处理。

#include<stdio.h>
#include <string.h>
int main()
{int inum=0,onum=0;char input[500001]="\0";gets(input);//末尾连接" "inum=strlen(input)+1;input[inum-1]=' ';input[inum]='\0';int output[inum];int first=0;//指向首个非零字符while(input[first]==' '){first++;}for(int i=inum-1;i>first;i--){if( (input[i]==' '&&input[i-1]!=' ') ||  (input[i]!=' '&&input[i-1]==' ') )//i指向单词末端或i指向单词首端{output[onum]=i;onum++;	}	}output[onum]=first;onum++;//输出if(onum==1)//如果输入为空格printf("\n");else{int i=0;input[output[i]]='\0';i++;printf("%s",input+output[i]);i++;while(i<onum){input[output[i]]='\0';i++;printf(" %s",input+output[i]);i++;}}return 0;
}

http://chatgpt.dhexx.cn/article/FRs3PmVd.shtml

相关文章

C++ 1009 说反话(20 分)

注意点1:转载自:https://blog.csdn.net/u011421608/article/details/44591579 我们先来看一段输入流cin>>和getline混用的代码: #include<iostream> #include<string> using namespace std;int main() {int age;string name;cout<<"请输入年…

7-32 说反话-加强版

7-32 说反话-加强版&#xff08;20 分&#xff09; 给定一句英语&#xff0c;要求你编写程序&#xff0c;将句中所有单词的顺序颠倒输出。 输入格式&#xff1a; 测试输入包含一个测试用例&#xff0c;在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成…

Sql Server char nchar varchar nvarchar 区别

一、 用快捷键AltF1 打开的表结构&#xff0c; 我们看到的length, nchar和nvarchar 需要除以2才是储存的真正长度 二 、 类型前缀的意思1.有var前缀的&#xff0c;表示是实际存储空间是变长的&#xff0c;varchar,nvarchar 所谓定长就是长度固定的&#xff0c;当输入的数据长度…

Sqlserver 中nchar(n)、varchar(n)、nvarchar(n)和nvarchar(max)的区别

nchar(n): 固定大小字符串数据。 n 用于定义字符串大小&#xff08;以双字节为单位&#xff09;&#xff0c;并且它必须是 1 到 4,000 之间的值。 存储大小为 n 字节的两倍。 varchar(n): 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间…

通过实战探索数据库中的char、varchar、varchar2、nvarchar2的部分区别

前言 注&#xff1a;本文的实践是在oracle数据库中进行的&#xff0c;主要基于字节与字符以及定长与变长方面考虑&#xff0c;探索这四个类型的部分区别 Oracle数据库中&#xff0c;char、varchar、varchar2、nvarchar2是我们常用到的数据类型 &#xff08;MySQL中没有varch…

nvarchar 和varchar区别

有时候设计字段的时候&#xff0c;碰到nvarchar和varchar时候&#xff0c;是有点犹豫。所以今天就来探个究竟把。 (一) varchar是非Unicode可变长度类型&#xff0c;nvarchar是Unicode编码可变长度类型 DECLARE name AS VARCHAR(50)我是中国人test SELECT name AS Name, DATAL…

oracle NVARCHAR2 数据类型

参考地址 https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch7progrunicode.htm#sthref807 英语不好的看中文直译 utf8可能会影响性能&#xff0c;因为它是一个可变宽度字符集。NChar字段的空白填充过多会降低性能。考虑使用nvarchar数据类型或更改为nchar数据类型的a…

【ORACLE】谈一谈NVARCHAR2、NCHAR、NCLOB等数据类型和国家字符集

一、背景 一直以来&#xff0c;很多用过ORACLE数据库的开发人员&#xff0c;都知道在ORACLE中&#xff0c;字符类型可以为varchar2&#xff0c;也可以为nvarchar2&#xff0c;但是很多人都不知道这两种类型有什么区别&#xff0c;同样还有char/nchar,clob/nclob这些&#xff0…

Oracle NCHAR与NVARCHAR2 最大字符数和最大字节数

根据官方文档和实验测试整理一下常见问题以及相关结论&#xff0c;以NVARCHAR2为主。 一、 含义及用途 NCHAR和NVARCHAR2都是Unicode数据类型&#xff0c;存储Unicode字符数据。NCHAR和NVARCHAR2数据类型的对应的国家字符集&#xff08;NLS_NCHAR_CHARACTERSET&#xff09;只能…

foreach 中如何给数组赋值

最近发现&#xff0c;在foreach中给数组赋值&#xff0c;在foreach外&#xff0c;数组是没有变化的&#xff0c;对此情况&#xff0c;有特定的处理方法&#xff0c;特此记录一下&#xff1a; 如下&#xff0c;就是在foreach中&#xff0c;加上 $res[$k] $v;给$res重新赋值&am…

数组与数组赋值

int类型数组赋值 #include<stdio.h> int main() { int a[] {1,2,3,4,5,7}; printf("a[3]%d", a[3]); return 0; } char类型数组赋值 1.直接字符串赋值 char a[] "q,0/d"; 2.逐个赋值 char b[] { d,b,3,&am…

VBA 不能给数组赋值,其实只是不能给静态数组整体赋值

1 问题&#xff1a;VBA报错&#xff1a;不能给数组赋值&#xff01; 其实并不是 所有数组不能赋值其实是不能给静态数组&#xff0c;整体赋值&#xff01;只是因为当前处理的是一个静态数组 2 什么是静态数组 &#xff08;只是大小静态&#xff01;&#xff01; 赋值可变&…

天呐!java从键盘给数组赋值

开头 该文档在Github上收获5K+star的Java核心神技(这参数,质量多高就不用我多说了吧)非常全面,包含基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等内容非常丰富…

php数组赋值方式,php数组赋值方式

推荐操作系统&#xff1a;windows7系统、PHP5.6、DELL G3电脑 1、两种赋值 (1)传值赋值 在PHP中&#xff0c;传递赋值是默认的传递方式。如果某个变量的值被赋予了另一个变量&#xff0c;那么改变其中一个的值对其他变量没有影响。 (2)引用赋值 引用赋值意味着新变量简单地引用…

在java中给数组赋值,java中给数组赋值的方法

1、数组操作中&#xff0c;可以使用等于()赋值 注意&#xff1a;此时新数组只是指向原数组的存储空间&#xff0c;并没有重新申请新的空间。 实例&#xff1a;public class ArrayTest{ public static void main(String args[]){ // 1 int[] anew int[4]; a[0]1; a[1]2; a[2]3; …

SSDP 服务发现协议

https://blog.csdn.net/braddoris/article/details/41479171 SSDP在Android上的实现 https://blog.csdn.net/iblade/article/details/81948805

【SSDP 协议介绍】

SSDP&#xff0c;即简单服务发现协议&#xff08;SSDP&#xff0c;Simple Service Discovery Protocol&#xff09;&#xff0c;是一种应用层协议&#xff0c;是构成通用即插即用(UPnP)技术的核心协议之一。 实现 简单服务发现协议是在HTTPU和HTTPMU的基础上实现的协议。 按照协…

RSTP和MSTP协议的原理

一.RSTP 1.RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;是STP协议的优化版&#xff0c;协议为802.1w。 2.RSTP具备STP的所有功能 3.RSTP可以实现快速收敛 在某些情况下&#xff0c;端口进入转发状态的延时大大缩短&#xff0c;从而…

简单服务发现协议SSDP【转】

来自&#xff1a;https://blog.csdn.net/wuruixn/article/details/23843877 SSDP:Simple Sever Discovery Protocol,简单服务发现协议是一种应用层协议&#xff08;常用于寻找upnp设备&#xff09;&#xff0c;此协议为网络客户提供一种无需任何配置、管理和维护网络设备服务的…

SIP协议-05 SDP协议

文章目录 1 SDP简介2 SDP协议格式2.1 字段描述2.1.1 Version&#xff08;必选&#xff09;2.1.2 origion&#xff08;必选&#xff09;2.1.3 Session Name&#xff08;必选&#xff09;2.1.4 Connection Data&#xff08;可选&#xff09;2.1.5 Bandwidth&#xff08;可选&…