一、题目:索引处的解码字符串

给定一个编码字符串 S。为了找出解码字符串并将其写入磁带,从编码字符串中每次读取一个字符,并采取以下步骤:

  • 如果所读的字符是字母,则将该字母写在磁带上。
  • 如果所读的字符是数字(例如 d),则整个当前磁带总共会被重复写 d-1 次。

现在,对于给定的编码字符串 S 和索引 K,查找并返回解码字符串中的第 K 个字母。

示例 1:

输入:S = "leet2code3", K = 10
输出:"o"
解释:
解码后的字符串为 "leetleetcodeleetleetcodeleetleetcode"。
字符串中的第 10 个字母是 "o"。

示例 2:

输入:S = "ha22", K = 5
输出:"h"
解释:
解码后的字符串为 "hahahaha"。第 5 个字母是 "h"。

示例 3:

输入:S = "a2345678999999999999999", K = 1
输出:"a"
解释:
解码后的字符串为 "a" 重复 8301530446056247680 次。第 1 个字母是 "a"。

提示:

  1. 2 <= S.length <= 100
  2. S 只包含小写字母与数字 29
  3. S 以字母开头。
  4. 1 <= K <= 10^9
  5. 解码后的字符串保证少于 2^63 个字母。

思路:

https://blog.csdn.net/qq_26410101/article/details/81908109

首先我们也是要一个个遍历,如果是字母,就将索引+1,如果碰到数字,就将这个索引乘以这个数字,当然同时要判断,索引与K的关系。如果索引小于K,就一直遍历下去,如果大于等于K,那么就不用了,这个时候我们可以找到第K个元素了。

如果我们有一个类似的字符串解码为:appleappleappleappleappleapple和索引K = 24,那么答案是相同的当K = 4。
通常,当一个解码的字符串与一些字长size长度重复的次数(例如一定数目的apple用size = 5重复6次),答案是索引的相同K,因为它是用于索引K % size。
只要解码后的字符串等于word重复d次数,我们就可以减少KK % (word.length)

代码:

    def decodeAtIndex(self, S, K):""":type S: str:type K: int:rtype: str"""if K == 0 and not S:return NoneN = 0for i,s in enumerate(S):if s.isdigit():N *= int(s)else:N += 1if N >= K:breakfor j in range(i,-1,-1):c = S[j]if c.isdigit():N /= int(c)K %= Nelse:if K == 0 or K == N:return cN -= 1

转载于:https://www.cnblogs.com/Lee-yl/p/9945265.html

算法47----大数相关推荐

  1. 【算法】大数乘法问题及其高效算法

    题目 编写两个任意位数的大数相乘的程序,给出计算结果.比如: 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 和 123 输出: 输出乘积,如:15185 ...

  2. 大数算法之大数加减法

    大数算法之大数加减法 当我们第一次编程,成功地在黑洞洞的控制台窗口中打印出"Hello World"的字符后,准备编写的第一个有实用性的程序是什么?我想,对于大多数人而言,这一问题 ...

  3. python快速幂算法解决大数取模

    1.前置性质 模运算的性质 [(a mod n)×(b mod n)] mod n = (a×b) mod n 指数可以拆分成二进制的形式,如9拆分成 1001 根据二进制的计算,1001 = ((1 ...

  4. 算法之大数运算加减法源代码

    很多小伙伴对计算机编程的算法感兴趣,但在很多竞赛类算法网站中,大数运算往往是必考的,而课本有基本未提及,所以,今天来提供算法的基本运算的源码(加减). 对于大多数大数运算,往往是超出int 的范围,比 ...

  5. 算法题-大数相乘问题

    今天在网上看到一个大数相乘的问题,题目是这样的:输入两个整数,要求输出这两个数的乘积.输入的数字可能超过计算机内整形数据的存储范围. 分析: 由于数字无法用一个整形变量存储,很自然的想到用字符串来表示 ...

  6. 牛客网 最短路 Floyd算法 Dijkstra算法 Java大数

    链接:https://www.nowcoder.com/questionTerminal/a29d0b5eb46b4b90bfa22aa98cf5ff17 来源:牛客网 最短路径 热度指数:2992 ...

  7. 二叉树的建立和遍历算法 - 数据结构和算法47

    二叉树的建立和遍历算法 让编程改变世界 Change the world by program   有童鞋会说,我们上节课研究这么多遍历的方法干啥呢?聪明的鱼油们怎么看?! 对于二叉树,思路方面我们已 ...

  8. 高精度除法算法(大数除于小数)

    高精度除法(大数除于小数) 思想:和人一样,人是从高位除,得出结果.但有点不一样的是每次除于之后的余数,如果高位后面还有数没有数的话,需要把余数乘于10,再加上下一位数.继续后面的运算,最后再把前置的 ...

  9. [Java] 蓝桥杯ADV-136 算法提高 大数加法

    问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. 输出格式 一行,a+b的值. 样例输入 4 2 样例输出 6 package ad ...

  10. 蓝桥杯 ADV-136算法提高 大数加法

    问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. 输出格式 一行,a+b的值. 样例输入 4 2 样例输出 6 分析:用两个指针一起 ...

最新文章

  1. 如何设置网页自动刷新(JSP,JS,HTML)
  2. 研究一下,如何实现一个文件系统
  3. ”dpkg: 处理归档 /var/cache/apt/archives/XXXXXX(--unpack)时出错“的解决方法
  4. 【机器学习】梯度提升树(GBDT)的原理小结
  5. iservice封装有哪些方法_5w大功率led白光灯珠参数,5w大功率led灯珠有哪些?
  6. Electron 实战:前端人的最佳跨平台解决方案
  7. 一文了解 2018 年最值得关注的 12 大框架
  8. [20150705]从AWR抽取有问题的sql语句.txt
  9. java源码 - ReentrantLock之FairSync
  10. 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
  11. Mac上Spotify 音乐添加到 djay Pro的详细教程
  12. MatConvnet工具箱文档翻译理解三
  13. Eclipse3.2安装简介
  14. dw中html5快捷键,DW快捷键大全
  15. 山大商院java课程_山大商院必读书目推荐——《社会科学方法论》
  16. web服务 面试可能会问的问题
  17. html绘制三维坐标系,使用html5绘制三维线框图
  18. uniapp H5、app、小程序不同端之间跳转
  19. 计算机软件固定资产无形资产,该归入固定资产还是无形资产?
  20. UML建模中简单消息、同步消息和异步消息

热门文章

  1. codevs——2152 滑雪
  2. UVA 10886 Standard Deviation
  3. Centos6.8编译安装LNMP环境
  4. jquery数组怎么传给后台_我是如何让公司后台管理系统焕然一新的(下)封装组件...
  5. MATLAB学习笔记(十一)
  6. 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...
  7. mysql trim 索引_mysql 强大的trim() 函数
  8. 电热耦合_作者特稿︱电网运行环境下基于电热耦合潮流的架空线路应力预估
  9. java 秒表时间格式化_java方法计时器,懒汉式,转换为00:00:00格式
  10. Python机器学习:PCA与梯度上升:05高维数据映射成低维数据(封装一个PCA)