小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作x和y),请小扣说出计算指令:“A” 运算:使 x = 2 * x + y;“B” 运算:使 y = 2 * y + x。在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。
输入:s = “AB”
输出:4
解题思路
循环遍历s,按照题目给的公式计算x,y即可。
Java 代码
publicintcalculate(String s){char[] ch = s.toCharArray();// 将字符串转为字符数组int x =1;// 初始化x,yint y =0;for(char c : ch){// 循环遍历字符数组if(c =='A'){// 如果当前字符为A
x =2* x + y;}elseif(c =='B'){// 如果当前字符为B
y =2* y + x;}}return x + y;// 返回x+y}
Python 代码
defcalculate(s):
x =1# 初始化x, y
y =0for c in s:# 循环遍历sif(c =='A'):# 如果当前字符为A
x =2* x + y
elif(c =='B'):# 如果当前字符为B
y =2* y + x
return x+y # 返回 x+y