题解 | #坐标移动#

坐标移动

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

这题我是一点点试的,跟大佬们相比复杂了一点,但是通过了,思路比较清晰 1、先用正则等手段淘汰非法输入 2、下面就简单了,一个for循环解决

``` python []
import re
while True:
    try:
        lst=input().split(";")#以分号结尾
        tmp=[]#加入一个临时数组
        for i in lst:
            if len(i)<=3 and not str(i[-1:]).isalpha():#len(i)<=3解决B10A11这种情况以及x100这种情况,排除3位问题,not str(i[-1:]).isalpha()解决A1A这种问题
                tmp.append(i)
        #print(tmp)
        tmps="".join(tmp)
        #print(tmps)
        match="[A|D|S|W][0-9]+"#正则匹配,[A|D|S|W]匹配一个,[0-9]匹配数字,+匹配一个或多个
        lstfind=re.findall(match, tmps)#获取所有经过正则匹配的数组,示例:['A10', 'S20', 'W10', 'D30', 'A10']
        #print(lstfind)#测试用
        x=0#横坐标
        y=0#竖坐标
        for i in lstfind:
            if "A" in i:
                t=int(i[1:])#获取数字
                x=x-t
            if "D" in i:
                t=int(i[1:])
                x=x+t
            if "W" in i:
                t=int(i[1:])
                y=y+t
            if "S" in i:
                t=int(i[1:])
                y=y-t
        print("{0},{1}".format(x, y))
    except:
        break
全部评论

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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