算法47----大数
一、题目:索引处的解码字符串
给定一个编码字符串 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"。
提示:
2 <= S.length <= 100
S
只包含小写字母与数字2
到9
。S
以字母开头。1 <= K <= 10^9
- 解码后的字符串保证少于
2^63
个字母。
思路:
https://blog.csdn.net/qq_26410101/article/details/81908109
首先我们也是要一个个遍历,如果是字母,就将索引+1,如果碰到数字,就将这个索引乘以这个数字,当然同时要判断,索引与K的关系。如果索引小于K,就一直遍历下去,如果大于等于K,那么就不用了,这个时候我们可以找到第K个元素了。
word
重复d
次数,我们就可以减少K
到K % (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----大数相关推荐
- 【算法】大数乘法问题及其高效算法
题目 编写两个任意位数的大数相乘的程序,给出计算结果.比如: 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 和 123 输出: 输出乘积,如:15185 ...
- 大数算法之大数加减法
大数算法之大数加减法 当我们第一次编程,成功地在黑洞洞的控制台窗口中打印出"Hello World"的字符后,准备编写的第一个有实用性的程序是什么?我想,对于大多数人而言,这一问题 ...
- python快速幂算法解决大数取模
1.前置性质 模运算的性质 [(a mod n)×(b mod n)] mod n = (a×b) mod n 指数可以拆分成二进制的形式,如9拆分成 1001 根据二进制的计算,1001 = ((1 ...
- 算法之大数运算加减法源代码
很多小伙伴对计算机编程的算法感兴趣,但在很多竞赛类算法网站中,大数运算往往是必考的,而课本有基本未提及,所以,今天来提供算法的基本运算的源码(加减). 对于大多数大数运算,往往是超出int 的范围,比 ...
- 算法题-大数相乘问题
今天在网上看到一个大数相乘的问题,题目是这样的:输入两个整数,要求输出这两个数的乘积.输入的数字可能超过计算机内整形数据的存储范围. 分析: 由于数字无法用一个整形变量存储,很自然的想到用字符串来表示 ...
- 牛客网 最短路 Floyd算法 Dijkstra算法 Java大数
链接:https://www.nowcoder.com/questionTerminal/a29d0b5eb46b4b90bfa22aa98cf5ff17 来源:牛客网 最短路径 热度指数:2992 ...
- 二叉树的建立和遍历算法 - 数据结构和算法47
二叉树的建立和遍历算法 让编程改变世界 Change the world by program 有童鞋会说,我们上节课研究这么多遍历的方法干啥呢?聪明的鱼油们怎么看?! 对于二叉树,思路方面我们已 ...
- 高精度除法算法(大数除于小数)
高精度除法(大数除于小数) 思想:和人一样,人是从高位除,得出结果.但有点不一样的是每次除于之后的余数,如果高位后面还有数没有数的话,需要把余数乘于10,再加上下一位数.继续后面的运算,最后再把前置的 ...
- [Java] 蓝桥杯ADV-136 算法提高 大数加法
问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. 输出格式 一行,a+b的值. 样例输入 4 2 样例输出 6 package ad ...
- 蓝桥杯 ADV-136算法提高 大数加法
问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. 输出格式 一行,a+b的值. 样例输入 4 2 样例输出 6 分析:用两个指针一起 ...
最新文章
- 如何设置网页自动刷新(JSP,JS,HTML)
- 研究一下,如何实现一个文件系统
- ”dpkg: 处理归档 /var/cache/apt/archives/XXXXXX(--unpack)时出错“的解决方法
- 【机器学习】梯度提升树(GBDT)的原理小结
- iservice封装有哪些方法_5w大功率led白光灯珠参数,5w大功率led灯珠有哪些?
- Electron 实战:前端人的最佳跨平台解决方案
- 一文了解 2018 年最值得关注的 12 大框架
- [20150705]从AWR抽取有问题的sql语句.txt
- java源码 - ReentrantLock之FairSync
- 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
- Mac上Spotify 音乐添加到 djay Pro的详细教程
- MatConvnet工具箱文档翻译理解三
- Eclipse3.2安装简介
- dw中html5快捷键,DW快捷键大全
- 山大商院java课程_山大商院必读书目推荐——《社会科学方法论》
- web服务 面试可能会问的问题
- html绘制三维坐标系,使用html5绘制三维线框图
- uniapp H5、app、小程序不同端之间跳转
- 计算机软件固定资产无形资产,该归入固定资产还是无形资产?
- UML建模中简单消息、同步消息和异步消息
热门文章
- codevs——2152 滑雪
- UVA 10886 Standard Deviation
- Centos6.8编译安装LNMP环境
- jquery数组怎么传给后台_我是如何让公司后台管理系统焕然一新的(下)封装组件...
- MATLAB学习笔记(十一)
- 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...
- mysql trim 索引_mysql 强大的trim() 函数
- 电热耦合_作者特稿︱电网运行环境下基于电热耦合潮流的架空线路应力预估
- java 秒表时间格式化_java方法计时器,懒汉式,转换为00:00:00格式
- Python机器学习:PCA与梯度上升:05高维数据映射成低维数据(封装一个PCA)