经典中的经典之字符串

前言:前段时间发烧了,所以耽误了很多事情,一直没有更新,多穿点衣服,感冒不好受。

接下来有时间就会陆续更新一些基础的算法题,题目都很经典,大家可以先尝试着做,再看

解析。

第一题:

392f380ff293499889efc6ec0c065828.png03698de334e84bb9960690587ea240c1.png

 

思路:先来审题,对于这种题目很长的题更应该耐着性子来读,把大意读懂,接着一步步模拟,明确优先顺序,那一步做什么判断,做之前可以先写一下思路,再来上手实操。

这道题看起来抽象,其实确实抽象,一般的人做不出,除非你是二班的人,我改代码都改了有两个小时。首先你应该判断你输入的字符串是否展开,不展开的话又分两种,一种是右边字符是左边的后继,,那么删除减号输出;第二种,如果右边比左边ascII小,那么保留减号直接输出。如果展开的话,先判断是正序还是逆序,同时你又要判断是否;'-'两边的字符是否都是数字还是都是字母,是的话才能继续展开,否则不展开。然后展开的话循环的左边界就是左字符加一,到右边界-1,同时右边界取不到,接着又要更具p2输出循环输出字符的次数,在循环内部根据p1的取值输出大小写,这里我定义了一个数组,将字符填进数组,方便后续的逆序输出。最后这里面还有很多细节,大家可以思考,比方说数组越界,逆序输出等等..

2fc769dc02c74d52b3b9e8d3157ffab5.png

 

第二题:

7357de01192746fbb7651f3896dd4e20.png

 

思路:注意到要输出的是单词,我们可以定义三个数组,分别是作为中间变量的,最长和最短字符串,如果中间变量大于最长就更新长度和单词。接着就是具体,可以用ch=getchar(),如果读到\n或者eof退出,碰到分隔符来判断,没碰到就把这个字符填进去中间变量字符串

31c78105380249e3a85423143409f306.png

第三题:

cd173ffa1a474103844657dc2d2b67b4.png思路:就是对着葫芦画瓢。要判断新的字符串,你就得先定义两个新的字符串,然后在给定的边界中遍历,将它添加进新的字符串,然后来比较即可

ba84c33648884a6dbd2d0d225c4022ce.png第四题:

9a15ee2f73aa453ab8b6d3e2bc84c952.png思路:这个题看起来简单,其实也要好好想一想。这里你可以这么想先定义个数组cnt[26]来计数等下出现字符串的时候减去’a'表示字母所在的位置,循环遍历字符串的时候,出现一次就计数一次,然后重新遍历数组,再判断输出

7a042112822c4ed18d2020fa46cb7161.png

第五题:

c433bdb55af14462a72db797055bbdce.png

思路:依葫芦画瓢。注意判断一下,最后一个字符是加上第一个字符,然后输出即可

5ab96541daf24d55aa63935d02459bf3.png

第六题:

39e13c3e8931470e8ea674dcce81305d.png

思路:

题意很简单,就是把数字字符的个数统计一下,然后输出个数和字符,那么肯定要定义计数器cnt

然后判断相邻两个字符是不是相同,相同cnt++不相同就输出,值得注意的是,要判断相邻两个,那么就要从1开始遍历,从0的话就越界了。最后还要再输出一遍,原因就是如果最后几个是相同的数字字符,循环里面就不会把他输出,举个例子最后几个数字是222,他的cnt一直加到3,就退出循环了,所以最后再输出一次。

第七题:

e2037f358fd94557bae1182901a387b2.png

思路:既然要统计键盘总次数,就要根据你输入的字符串的每一个字母来确定,所以你得将输入按动一次,二次,三次,四次出现的字符存入一个数组,并把字符作为下标因为你遍历的字符串是字母,把数值当作数组的值,最后就和即可。

ef4765d893c84842b8979a7bf0341371.png第八题:

29d95ad01e654a4aac256b1781955ea4.png

 

思路:这个题看起来很抽象,但是题意很好懂,就是先定义二维数组,接着输出,如果是地雷输出*不是地雷判断这个位置的八个方位有多少个地雷加起来,输出。这里介绍两种方法,一种就是用方向数组来优化代码,另外一种就是用常规if判断

efb9798f354e46a0bbb0f9d5e9273d8c.png在这里面,d[x]表示横行移动d[y]表示纵向移动,例如当d[1+dx[0]][1+[dy[0]]就表示d[2][0],就是向左移动一格判断。如果用八个if来判断的话就是,把else里面的语句更改为

942ed99004fc448b812480b8395bcca2.png

第九题:

b112d03519c54acab686814c105f654c.png

第十题:

61056ed2a9f741efb8fbb78c90994192.png

思路:这个题没什么说的,字符串中有空格,所以读取的时候用getline,然后分别统计即可

ed23600241a74ec9a78d43a529f4e912.png

第十一题:

c732ebcaba2547a3a89d06654548752f.png思路:

需要找vk,同时,你能更改一个字母,那么你可以这样,先找到所以出现的vk然后将他更改为其他的字符,计数器++,方便下一次改字符的时候计数,然后你就要找vv或者vk,要考虑全面找到vv的话改后一个v,找到kk 的话改第一个k,找到就break;最后输出即可。

68283dfb06064847a6c61ff132bbcffa.png

第十二题:

3451d40877a64d87bed53519ea5a645c.png

 

思路:

这个题的题意其实有点抽象,不太好理解,我整这道题也整了好久。

注意他问的是字符串中有多少个boy和girl包括被覆盖的,先从这个输入输出来看,为什么boy是4,因为,一个眼睛可见的boy,还有一个o,说明什么?说明o左右两边的b 和y都被覆盖了,后面的yy同理。想到这里,你肯定还是懵。你就要统计次数了,那么统计什么呢,比方说出现一个b那么你计数器是不是要++,出现o计数器++,出现y,计数器也++,但是里面必然会有重复的,比方说你先是统计b,出现b就计数器++的话,包括boy,bo,出现o包括bo,oy,是不是发现bo重复统计了,y也是同理,所以为了避免重复,你只需在当出现o的时候加一个条件,就是不能出现b,同理出现y的时候不能出现b和o,再来计数,这样就避免了重复。

8474c7d9a24c4a12ac339d0c40f0da7d.png第十三题:

1b2470cee8364ad682a747913903d60a.png思路:

题目看似抽象,实则确实抽象。要理解题意。具体来做的话好像的就是打表格。

把所有的英文数字单词计入一个数组,所对应数字的平方%11的值,再放到一个数组,如何循环六次,每一次输入一个单词,判断是不是数字单词,是的话就把对应数字平方%11的值赋给一个新的数组,存起来。最后排序一下输出。并且如果排完之后的数字不是第一位的话,如果数值比10小前面的0,不能省略,所以,这里还要用if判断一下,再来输出。

f2e7581cf3c142c99425bbd76ca8c259.png

总共13题,到此结束,感谢你的阅读,与君共勉!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207259.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql语法大全

1,创建数据库 create database 数据库名字; 2,查看所有的数据库名称 show databases; MySQL服务器已有4个数据库,这些数据库都是MySQL安装时自动创建的。 information_schema 和 performance_schema 数据库分别是 MySQL 服务器的数据字典(…

LongAccumulator

原子操作之LongAccumulator 和LongAdder的区别在于,LongAdder是在Cell里面只能做加减操作,不能乘除,而LongAccumulator就可以定义乘除操作。原理和LongAdder都是一样的,一个Base和一个Cells数组。 原文跳转地址

网工内推 | 合资公司网工,CCNP/HCIP认证优先,朝九晚六

01 中企网络通信技术有限公司 招聘岗位:网络工程师 职责描述: 1、按照工作流程和指引监控网络运行情况和客户连接状况; 2、确保各监控系统能正常运作; 3、快速响应各个网络告警事件; 4、判断出网络故障,按…

RabbitMQ快速入门(简单收发消息)

文章目录 前言一、数据隔离1.用户管理2.virtual host 二、控制台收发1.交换机2.队列3.绑定 三、编程式收发1.依赖和配置2.收发信息 总结 前言 1.了解数据隔离 2.RabbitMQ控制台收发信息 3.SpringBoot整合RabbitMQ收发信息 一、数据隔离 1.用户管理 点击Admin选项卡&#xff0…

2023年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题是由安全生产模拟考试一点通提供,危险化学品生产单位安全生产管理人员证模拟考试题库是根据危…

JMeter处理接口签名sign

写接口脚本的时候,很多接口涉及到签名,今天介绍下用JMeter编写签名脚本的方法。 举个例子,开启红包接口,请求方式为post POST /v1/api/red/open json请求参数 { "red_id":1, "timestamp":"1667033841…

Epub书籍阅读工具

Epub书籍阅读工具 前言WIndows总结Neat ReaderAquile ReaderWPS Android总结Neat Reader掌阅 前言 Epub文件为电子书文件格式,此格式的电子书相比txt书籍,增加了目录跳转功能,并可以显示图片。本文介绍WIndows和Android端的epub书籍阅读工具…

【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案

目录 一、问题背景: 二、实际示例: 三、解决方案: 1. Delphi 代码: 2. javaScript代码: 一、问题背景: 在用Delphi开发程序,无论是移动端还是PC端,都可以很方便的使用TWebBrows…

网页数据抓取工具推荐:简数采集器

推荐一款好用的网页数据抓取工具:简数采集器!!! 简数采集器不用下载安装软件,直接可以在浏览器上使用,全程云运行,无需挂机,十分方便。 文章数据采集也非常简单,只需输…

进程间通信(管道/消息队列/共享内存/信号量)

目录 一、进程间通信介绍1.1 进程间通信的目的1.2 进程间通信的发展1.3 进程间通信的分类 二、管道2.1 什么是管道?2.2 匿名管道2.3 实现匿名管道通信的代码2.4 用fork来共享管道原理2.5 站在文件描述符角度-深度理解管道2.6 站在内核角度-管道本质2.7 管道读写的规…

Mac中LaTex无法编译的问题

最近在使用TexStudio时,遇到一个棘手的问题: 无法编译,提示如下: kpathsea: Running mktexfmt xelatex.fmt /Library/TeX/texbin/mktexfmt: kpsewhich -var-valueTEXMFROOT failed, aborting early. BEGIN failed–compilation a…