获取解码字符串指定位置的数值 Decoded String at Index
2018-10-04 12:53:06
问题描述:
问题求解:
首先本题给出了问题的规模,从Note中我们可以看到解码后的字符串长度甚至可以达到2^63的长度,这个长度已经远远超过整型数的范围,因此如果只是先解码后提取的话无疑是会超时的。
那么本题还有什么别的思路呢?正常来说如果碰到这种重复循环的问题,首先想到的自然是取余操作,比如hahahaha,K = 5,其实和 (K % 2 = 1)是一样的,因此本题的解法就很明确了,就是每次对K进行取余操作,如果说碰到了K == size的情况,也就是说当前的字符扩展后正好长度为K,那么直接返回这个字符即可(当然首先需要判断是否为字母)。
public String decodeAtIndex(String S, int K) {
long size = 0;
int N = S.length();
for (int i = 0; i < N; i++) {
char c = S.charAt(i);
if (Character.isDigit(c)) size *= (c - '0');
else size++;
}
for(int i = N - 1; i >= 0; i--) {
char c = S.charAt(i);
K %= size;
if (K == 0 && Character.isLetter(c)) return Character.toString(c);
if (Character.isDigit(c)) size /= (c - '0');
else size--;
}
return null;
}
2019.04.27
public String decodeAtIndex(String S, int K) {
long size = 0;
char[] chs = S.toCharArray();
for (int i = 0; i < chs.length; i++) {
if (chs[i] >= '0' && chs[i] <= '9') size *= (chs[i] - '0');
else size++;
}
for (int i = chs.length - 1; i >= 0; i--) {
if ((K == 0 || K == size) && !Character.isDigit(chs[i])) return String.valueOf(chs[i]);
if (chs[i] >= '0' && chs[i] <= '9') {
size /= (chs[i] - '0');
K %= size;
}
else size--;
}
return "";
}
获取解码字符串指定位置的数值 Decoded String at Index的更多相关文章
- PHP字符串指定位置插入字符串
1.substr_replace(string,replacement,start,length);需插入时设置length为0即可 string 必需.规定要检查的字符串. replacement ...
- 【HANA系列】SAP HANA SQL获取某字符串的位置
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取某字 ...
- 【LeetCode】880. Decoded String at Index 解题报告(Python)
[LeetCode]880. Decoded String at Index 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- [Swift]LeetCode880. 索引处的解码字符串 | Decoded String at Index
An encoded string S is given. To find and write the decodedstring to a tape, the encoded string is ...
- [LeetCode] 880. Decoded String at Index 在位置坐标处解码字符串
An encoded string S is given. To find and write the decoded string to a tape, the encoded string is ...
- 【PHP】在目标字符串指定位置插入字符串
PHP如何在指定位置插入相关字符串,例子:123456789变为1_23_456789插入"_"到指定的位置! (可以用作换行或者其他处理) 插入示例,具体思路在代码中有注释: & ...
- Python 字符串指定位置替换字符
指定位置替换字符 def replace_char(old_string, char, index): ''' 字符串按索引位置替换字符 ''' old_string = str(old_string ...
- C#获取json字符串指定的值
Newtonsoft.Json在json和对象之间转化是一个非常强大的工具. 对象转化json字符串 Newtonsoft.Json.JsonConvert.SerializeObject() jso ...
- C# 在字符串指定位置之前插入新的字符串
http://zhidao.baidu.com/link?url=XbU4souNCiDk9AbdYWMDj6VMO7AxlnIpcEnAy4JgfaZXxlpjVt2cEoL6GPO9B0WytMq ...
随机推荐
- 微信小程序细节
微信小程序开发几个细节: 1.界面传值 ①全局参数传值 <!--结果--> <view wx:for="{{data}}" class="case pr ...
- metasploit(MSF)对windows的ms17-010漏洞利用
picture 配置exploit msf > use exploit/windows/smb/ms17_010_eternalblue msf exploit(windows/smb/ms17 ...
- python简说(五)操作文件
f = open('users.txt',encoding='utf-8') #读文件的时候,必须存在在才可以读 文件对象,或者文件句柄res = f.read()print(res)f.close( ...
- windows2012R2标准版升级到数据中心版,不用重装系统
windows2012R2标准版升级到数据中心版,不用重装系统 Windows Server 2012 R2是微软的服务器系统,是 Windows Server 2012 的升级版本. Windows ...
- bzoj 3262 陌上花开 - CDQ分治 - 树状数组
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- InstallShield安装包在Win7下权限问题的解决方案 (转载)
转载:http://blog.csdn.net/wuzhengqing1/article/details/6570149 转载:http://blog.csdn.net/brikoff/article ...
- python --- 25 模块和包
一.模块 1.导入方式 自己创建的模块名称 切不可和 内置模块的一样 ① import 模块 ② import 模块 as 名 设置在此空间的名称 ③ from 模块 import ...
- 终于记住回车和换行cr lf的来由和含义了 -参考: http://www.cnblogs.com/me115/archive/2011/04/27/2030762.html
回车: carriage return, 是将光标在同一行中, 回到当前行的 行首. 回来的本意就是 返回.. 所以 是同一行的行首. CR 换行: line feed: feed: 饲养(动物); ...
- js二叉树
插入数值//初始化node对象function Node ( data) { this.data = data; this.left = null; this.right = null;}// 定义插 ...
- MyEclipse代码编辑器中汉字太小的解决办法(中文看不清)
问题描述:新安装的myeclipse 2014,代码编辑器中汉字很小看不清 解决办法:调整字体即可.通过菜单Windows——Preferences,输入font过滤选择Colors and Font ...