肛交颜射
在编程的全国里,算法题目老是充满了根由和挑战。今天,咱们要来聊聊 LeetCode 上的第 1165 题——单行键盘。这谈题不仅有趣有趣,还能匡助咱们更好地明白字符串操作和数组的运用。让咱们一谈来望望何如用 Java 科罚这个问题。
题目描画
题目描画了一个有趣有趣的场景:咱们有一款极度的键盘,所有这个词的键王人陈列在一溜上。给定一个长度为 26 的字符串keyboard,示意键盘的布局(索引从 0 到 25)。一入手,手指在索引 0 处。要输入一个字符,必须把手指迁移到所需字符的索引处。手指从索引 i 迁移到索引 j 所需的时分是 |i - j|。
咱们需要写一个函数来计较用一个手指输入一个字符串word所需的时分。
示例
示例 1:
输入:keyboard = "abcdefghijklmnopqrstuvwxyz",word = "cba"
好大夫在线输出:4
讲明:从 0 号键迁移到 2 号键来输出 'c'肛交颜射,又迁移到 1 号键来输出 'b',接着迁移到 0 号键来输出 'a'。总用时 = 2 + 1 + 1 = 4.
示例 2:
输入:keyboard = "pqrstuvwxyzabcdefghijklmno",word = "leetcode"
输出:73
解题念念路
要科罚这个问题,咱们不错按照以下尺度进行:
入手化距离矩阵
:创建一个 26x26 的二维数组distances,用于存储键盘上每个字符之间的距离。
计较字符之间的距离
:遍历键盘字符串,计较每对字符之间的距离,并将其存储在distances矩阵中。
入手化成果和前一个字符的位置
:将成果res入手化为 0,并将prev入手化为键盘字符串的第一个字符的位置。
计较输入单词的总时分
:遍历单词字符串,关于每个字符,计较从前一个字符到现时字符的距离,并将其累加到res中。更新prev为现时字符的位置。
复返成果
:复返累加的总时分res。
代码兑现
package_1165;publicclassLeetCode1165{publicintcalculateTime(Stringkeyboard,Stringword){int[][]distances=newint[26][26];for(inti=0;i
回来
通过上述尺度和代码兑现肛交颜射,咱们不错破绽地计较出在单行键盘上输入一个字符串所需的时分。这个问题不仅教师了咱们对字符串和数组的操作智力,还匡助咱们更好地明白了何如通过预处理(如计较距离矩阵)来优化算法的性能。