美文网首页
IOS 算法(基础篇) ----- 速算机器人

IOS 算法(基础篇) ----- 速算机器人

作者: ShawnAlex | 来源:发表于2020-09-29 15:14 被阅读0次

一款速算机器人, 店家对机器人说出两个数字(记作 x 和 y),说出计算指令:

"A" 运算:使 x = 2 * x + y;
"B" 运算:使 y = 2 * y + x。

机器人根据字符串中字符的顺序表示计算顺序,最终返回 x 与 y 的和为多少。

例如
输入:s = "AB" 输出:4

经过一次 A 运算后,x = 2, y = 0。
再经过一次 B 运算,x = 2, y = 2。
最终 x 与 y 之和为 4。

方法1 遍历

按照题意可以直接机械写出
循环判断
A: x = 2 * x + y
B: y = 2 * y + x
返回 x + y

    func calculate(_ s: String) -> Int { 
        var x = 1, y = 0
        for word in s {
            if word == "A" {
                x = 2 * x + y
            }else if word == "B" {
                y = 2 * y + x
            }
        }
        return x + y;
    }

方法2 数学计算

因为最后返回的结果是 x + y
那么每有一个A, 有x+y=(2x+y)+y=2x+2y
那么每有一个B, 有x+y=x+(2y+x)=2x+2y
可以看出每出现一个A或者B,都使x+y的值翻倍(x2)

所以我们可以得出结果为
((x+y)*(2^s长度), 因为x+y=1, 即只需计算 "2的s长度" 次方即可, 1行代码

    func calculate(_ s: String) -> Int { 
        return Int(pow(Double(2) , Double(s.count)));
    }

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

相关文章

  • IOS 算法(基础篇) ----- 速算机器人

    一款速算机器人, 店家对机器人说出两个数字(记作 x 和 y),说出计算指令: "A" 运算:使 x = 2 * ...

  • IOS 算法(基础篇) ----- 机器人路线

    今天更新一道简简单单机器人走路的问题 机器人初始坐标(0, 0), 机器人可以向上下左右 (U, D, L, R)...

  • 越基础越重要

    今天想来谈一谈基础的重要性。 最近在学习一些关于增长率的习题计算。在里面接触到速算法,在自己推导速算法时候感悟到了...

  • 儿童快心算,一分钟数学速算

    ◆★◆口算心算速算,牛宏伟快心算口诀,速算盒子学生端,数学速算法,牛宏伟快心算教材教案◆★◆ ----------...

  • iOS 动画基础总结篇

    iOS 动画基础总结篇 iOS 动画基础总结篇

  • 速算法

    文/柳若水 在生产和生活中我们经常遇到算数,有时候遇到一些比较大的数字,算起来还比较麻烦。 最近看视频,有一种算法...

  • IOS 算法(基础篇) ----- 基础索引

    今天分享一道基础中的基础算法题, 给大家分享一下 如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲...

  • 算法速度比较--大O表示法

    1 快速算法和慢速算法的比较 当我们比较两个算法的速度时,想到的最直接方法就是比较两个算法完成同一个任务所用的时间...

  • 牛宏伟快心算电话,牛宏伟快心算教学视频

    ◆★◆牛宏伟快心算教程,牛宏伟快心算培训,数学速算培训,数学加法速算法,幼儿心算方法◆★◆ -----------...

  • PHP快速算法

    PHP快速算法,注意数组地址引用,便于打印

网友评论

      本文标题:IOS 算法(基础篇) ----- 速算机器人

      本文链接:https://www.haomeiwen.com/subject/ypseuktx.html