目录

  • 简介
  • 解题思路
  • 代码

简介

仅凭借模糊的记忆复述题目:
在PC端切换大小写有两种方式,1、Caps Lock 切换大小写状态,需要按键一次。
2、shift + 字母 临时切换,需要同时按住2个键,记为两次。
现给定一个仅包含大小写的字符串,求出打印此字符串所需的最少按键数。

输入:
第一行:N(字符串长度)
第二行:String(仅包含英文大小写字母的字符串)
输出:
第一行:n(打印出字符串的次数)
例:
输入:6AaAAAA
输出:8

解题思路

个人理解来看,这道题的思路很简单:大写字母出现与否?出现在什么位置?是否连续出现?对于解答此题很有帮助。具体分析:
情况一:如果大写字母未出现,字符串长度即为按键次数。
情况二:如果大写字母仅出现一次,按键次数等于len(str)+1。
情况三:大写字母出现多次,这种情况就相比前两种稍微复杂一些。我们要考虑字母出现的位置,和字母前面的字母与后面的字母的大小写情况,具体分析如下:
1、字母出现在开头,后面的字母不论大小写:Aa、AA,按此大写字母均需多按一个键。
2、字母出现在结尾,前面的字母区分大小写,前面为小写字母时aA,按键+1,前面为大写字母时AA,按键不变。
3、字母出现在中间(非开头结尾),当前后字母均为大写时(AAA),按键不变。否则(aAA,aAa,AAa),按键加一。

代码

编码环境:python3.7

# 输入的字符串
s = '7\nAaAAAAA'
# 处理字符串,获取长度N和字母列表
N = int(s.split('\n')[0])
words_list = [item for item in s.split('\n')[1]]# 定义判断大小写函数
def is_upper(word):if word == word.upper():return True# 创建列表,将大写字母的索引存入列表中
upper_indexes = []
for index,item in enumerate(words_list):if is_upper(item):upper_indexes.append(index)
print(upper_indexes)# 定义判断索引函数
def judge_index(index):if index == 0:return '0'if index == len(words_list)-1:return '-1'else:return '1'# 定义计算按键次数的函数
def counts(index_target):# 定义计数器count = Nif len(index_target) == 0:return countelif len(index_target) == 1:return count+1else:for index in index_target:if judge_index(index) == '0':count += 1elif judge_index(index)=='-1':if not is_upper(words_list[index-1]):count += 1else:if is_upper(words_list[index-1]) and is_upper(words_list[index+1]):count += 0else:count += 1return countprint(counts(upper_indexes))
输出
>>> 9

2020京东校园招聘笔试编码题小分享--大小写切换相关推荐

  1. 2020京东校园招聘笔试编码题小分享--队列分组排序

    被记住的永远是疯子! 目录 简介 题目 解题思路 代码 简介 这道题是昨晚京东2020校园招聘数据研发岗的笔试题编码题原题,昨日时间有限,我又能力有限,所以木有写全,今天上午自己整理了一下,分享给需要 ...

  2. 2020京东社招笔试编程题-数据分析岗

    一个朋友参加的2020京东社招数据分析岗的笔试,有两道编程题.留了第一题,大意就是根据每日限制如何出售股票使得总亏损最少. import math while 1:nm=list(map(int,in ...

  3. 美团2021届秋季校园招聘笔试真题解析:小团的复制粘贴

    问题 小团是一个莫得感情的 CtrlCV 大师,他有一个下标从 1 开始的序列 A 和一个初始全部为 -1 序列 B ,两个序列的长度都是 n .他会进行若干次操作,每一次操作,他都会选择 A 序列中 ...

  4. 京东2015校园招聘笔试编程题

    题目一: 请编写一个函数func,输入一个正整数n,返回一个最小的正整数m(m>9,即m至少包含两位数),使得m的各位乘积等于n,例如输入36,输出49:输入100,输出455,如果对于某个n不 ...

  5. 奇虎360_2017校园招聘笔试编程题第一题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第一题. 1. 题目 2. 输入输出及样例 3. 我的思路 这题应该看题目理解一下就有思路,最简单粗暴的就是创建一个二维数组in ...

  6. 奇虎360_2017校园招聘笔试编程题第二题

    今晚做了360的校招笔试题,编程题难度适中,在这里跟大家分享一下编程题的第二题.第二道题也不难想到思路,但是如果写法不当,可能无法满足题目的时间限制. 1. 题目 2. 输入输出及样例 3. 我的思路 ...

  7. 京东2018年校园招聘笔试代码环节答案分享

    第一题:括号匹配问题 合法的括号匹配序列被定义为: 1.空串""是合法的括号序列: 2.如果X和Y是合法序列,那么XY一定是合法序列 3.如果X是合法序列,那么(X)也一定是合法序 ...

  8. tcl c语言笔试题,TCL2014校园招聘笔试真题及答案

    1.ADO.net中常用的对象有哪些?分别描述一下. 答:Connection数据库连接对象Command数据库命令DataReader数据读取 器DataSet数据集 2.什么是code-Behin ...

  9. 米哈游 2020 年实习生招聘笔试编程题2——最少的移除

    题目描述 如果一个字符串中的括号是成对出现的且闭合顺序无误则称该字符串为标准字符串.给你一个字符串,该字符串由左括号右括号和英文字母组合而成,请你移除最少数目的括号,使得它成为一个标准字符串,并返回修 ...

最新文章

  1. WorldWind Java 版学习:8、事件响应
  2. 算法-----两数之和 II - 输入有序数组
  3. python简单代码input-python简单基础代码
  4. Mybatis的核心——SqlSession解读
  5. 关于解决[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  6. 方法的重载(overload)和重写(override)的区别
  7. LeetCode Sort Colors
  8. Apache+PHP+Mysql+jdk+tomcat的安裝
  9. Vue打包并发布项目
  10. centos安装mysql wsl_wsl安装/卸载mysql
  11. 一元线性回归预测:销售收入与广告支出实战
  12. 凸二次规划的解法(x取值具有上确界)
  13. 友勤发布2019年Oracle P6软件培训公开课计划
  14. PGIS 天地图主题颜色背景修改 图片 filter 蓝色 HTML CSS IMG filter 颜色矩阵在线计算 RGBA转换 SVG  feColorMatrix
  15. source insight同步的时候崩溃_“我在国外,崩溃了一整年。”
  16. 单细胞测序数据下载和预处理
  17. Pitest内存泄露分析 (工具使用IDEA、Jprofiler)
  18. python求平均值_如何用python求平均值
  19. css文字瘦,前端开发CSS减肥工具:CSS Usage
  20. java skip函数_Java 8 实战

热门文章

  1. [集卡游戏]几何分布在竞赛中的应用
  2. Unity错误解决GetType().Name+“OnInspectorGUI must call ApplyRevertGUI to avoid unexpected behaviour.“
  3. 解决WebService部署时出现的“未能创建类型...”错误
  4. IC/FPGA一文练完
  5. KMS11激活Window系列
  6. JavaScript学习:利用第三方接口做手机归属地查询
  7. JEECG报表整合方案
  8. 谷歌SEO排名受哪些因素的影响?(一)
  9. QQ安装教程 2 -for wuqs
  10. 运维生涯中总有一次痛彻心扉的rm命令