LCP 17
小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:
"A"运算:使x = 2 * x + y;"B"运算:使y = 2 * y + x。
在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。
输入:s = "AB"
输出:4
class Solution(object): def calculate(self, s): """ :type s: str :rtype: int """ x=1 y=0 for op in s: if(op=='A'): x=2*x+y else: y=2*y+x return(x+y)

奥数神童(?)做法
目标结果是x+y
出现一个"A",有x+y=(2x+y)+y=2x+2y
出现一个"B",有x+y=x+(2y+x)=2x+2y
所以每出现一个A/B,都使x+y的值翻倍 因此结果是2**len(s)
Work Hard
But do not forget to enjoy life😀
本文来自博客园,作者:YuhangLiuCE,转载请注明原文链接:https://www.cnblogs.com/YuhangLiuCE/p/17085291.html
posted on 2023-02-02 10:56 YuhangLiuCE 阅读(13) 评论(0) 收藏 举报
浙公网安备 33010602011771号