题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

str=input()
str_list=str.split(";")
p={}
for item in str_list:
    if len(item)>1 and item[0] in list("ASDW") and item[1:].isdecimal():
        p[item[0]]=p.get(item[0],0)+int(item[1:])
p0=(p['W']-p['S'])
P1=(p['D']-p['A'])
print('%d,%d'%(P1,p0))

一、解题思路

  1. 理解问题:输入字符串,根据输入的第一个方向字母和步数确定坐标移动
  2. 分析问题:
  • 针对输入,要分割成单个片段存储在列表中
  • 要提取第一个字符串为方向,第一个后的字符串为步数
  • 中间运算的方向和步数存储在字典中,字典的key是方向,value是步数,初始步数默认是0,后面变化的步数要加上现有的步数
  • 输出根据(W+,S-),(D+A-)分成两组输出且输出格式要求为(x,y)的格式,打印时改变格式,并打印格式是数字
  1. 设计算法
  • 输入赋给str=input(),分割成单个片段是并赋给str_list=str.split()
  • 由于计算要存储在字典中,所以先确定字典p,
  • 由于要对字符串中的每一个字符进行操作,所以要遍历每一个字符串,使用for item in str_list:遍历所有字符串
  • 遍历字符串时,不是所有的字符都会计算,只有符合题中格式的字符串第二位后的数字才会计算,所以有个if的判断语句+长度>1&第一位是字母&从第二位后是数字:if len(item)>1 and item[0] in list('AWSD') and item[1:].isdecimal()
  • 对符合要求的字符串进行计算、存储在字典中,p[item[0]]=p.get(item[0],0)+int(item[1:0])
  • 计算最后
  1. 编写代码
  2. 测试
算法学习分析与整理 文章被收录于专栏

个人学习算法的文档整理与思考,举一反三,相爱相杀。

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-08 17:10
拼多多 算法 38x18 大专
李橙子:你的白菜价我做梦都遥不可及
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务