概述
文章目录
题目描述
题目描述
我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:
- 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello
- 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello
- 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCC
我特喵是个天才!我在蓝翔学过挖掘机和程序设计,按照这个原理写了一个自动校对器,工作效率从此起飞。用不了多久,我就会出任CEO,当上董事长,迎娶白富美,走上人生巅峰,想想都有点小激动呢!
……
万万没想到,我被开除了,临走时老板对我说: “做人做事要兢兢业业、勤勤恳恳、本本分分,人要是行,干一行行一行。一行行行行行;要是不行,干一行不行一行,一行不行行行不行。” 我现在整个人红红火火恍恍惚惚的……
请听题:请实现大锤的自动校对程序
输入描述:
第一行包括一个数字N,表示本次用例包括多少个待校验的字符串。
后面跟随N行,每行为一个待校验的字符串。
输出描述:
N行,每行包括一个被修复后的字符串。
示例1
输入
2
helloo
wooooooow
输出
hello
woow
初始想法
对于第一条规则,思考后想到的是借助于一个变量 i 初始为0,记录后一个字符是否与前一个字符相同,若相同则加1,否则不变。
若 i 为2,则删除当前所指向的字符。
但是对于第二个没有想到简单合适的方法。
借鉴分析后:
思路1:
利用 res 存储修改后的字符
对于输入的每个字符串 s 的每个字符 e:
分别检查两条规则,若都不符合则存入 res 中
首先,这两条规则都是对于 res 大于2的。
规则1:
检查连续3个字符是否相同,则res 肯定>=2,加上当前的字符就是3个,即当前字符,和res 已有的倒数两个字符检查是否相同
若相同,则跳出本次循环,进行下一次循环,不执行最后的res.append(i)。
规则2:
对于2对字符是否相同,要求res长度>=3。检查当前字符和倒数第一字符,倒数第二个字符和倒数第三个字符是否相同。
n = int(input())
while n > 0:
s = input()
res = []
for e in s:
if len(res) < 2:
res.append(e)
continue
if len(res) >= 2:
if e == res[-1] and e == res[-2]:
continue
if len(res) >= 3:
if e == res[-1] and res[-2] == res[-3]:
continue
res.append(e)
print("".join(res)) # 一个字符串检查完成,输出检查后结果
n -= 1
实际编程问题:
1、
n = int(input())
while(n--):
Python 没有 n-- 这种用法
2、
n = int(input())
while n > 0 :
s = input()
res = []
for i in s:
if(len(res))<2:
res.append(i)
if(len(res)) >=2:
if i == res[-1] and i == res[-2]:
continue
if(len(res))>=3:
if i == res[-1] and res[-2] == res[-3]:
continue
res.append(i)
print("".join(res))
n -= 1
错误:
if(len(res))<2:
res.append(i)
之后少了continue
不然最后又加了一次当前字符
以helllo为例分析。
收获
1. 对 continue 的理解
循环里有continue ,则结束本次循环,进行下一次循环 i+1 ,continue之后的不执行。
2、
添加要改颜色的字体
添加要改颜色的字体
添加要改颜色的字体
添加要改颜色的字体
最后
以上就是虚拟舞蹈为你收集整理的2019牛客网校招真题(1星)---万万没想到之聪明的编辑的全部内容,希望文章能够帮你解决2019牛客网校招真题(1星)---万万没想到之聪明的编辑所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复