直接遍历字符串进行判断,计算x和y的值,最后直接相加。这种计算方式模拟了一个斐波那契数列的变种,其中 x 和 y 分别代表了序列中的连续两个数,但它们的更新规则与标准斐波那契数列(即每个数是前两个数的和)不同。在这个变体中,x 和 y 的更新是基于当前值的两倍加上另一个值。
class Solution {
public int calculate(String s) {
int x = 1;
int y = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == 'A') {
x = 2 * x + y;
}
if (c == 'B') {
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)
作者:生存就是最大的幸运