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的更多相关文章

  1. PHP字符串指定位置插入字符串

    1.substr_replace(string,replacement,start,length);需插入时设置length为0即可 string 必需.规定要检查的字符串. replacement ...

  2. 【HANA系列】SAP HANA SQL获取某字符串的位置

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取某字 ...

  3. 【LeetCode】880. Decoded String at Index 解题报告(Python)

    [LeetCode]880. Decoded String at Index 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  4. [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 ...

  5. [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 ...

  6. 【PHP】在目标字符串指定位置插入字符串

    PHP如何在指定位置插入相关字符串,例子:123456789变为1_23_456789插入"_"到指定的位置! (可以用作换行或者其他处理) 插入示例,具体思路在代码中有注释: & ...

  7. Python 字符串指定位置替换字符

    指定位置替换字符 def replace_char(old_string, char, index): ''' 字符串按索引位置替换字符 ''' old_string = str(old_string ...

  8. C#获取json字符串指定的值

    Newtonsoft.Json在json和对象之间转化是一个非常强大的工具. 对象转化json字符串 Newtonsoft.Json.JsonConvert.SerializeObject() jso ...

  9. C# 在字符串指定位置之前插入新的字符串

    http://zhidao.baidu.com/link?url=XbU4souNCiDk9AbdYWMDj6VMO7AxlnIpcEnAy4JgfaZXxlpjVt2cEoL6GPO9B0WytMq ...

随机推荐

  1. linux下部署git服务器

    我这里用的是redhat7.4, 直接开始吧. 环境 服务端: Redhat7.4 + git(version 1.8.3.1) IP:192.168.137.168 客户端: win7 + git ...

  2. php 操作 mysql 数据库常用方法集合

    参考: https://www.runoob.com/php/php-pdo.html https://www.cnblogs.com/feng18/p/6523646.html https://bl ...

  3. Testng测试报告

    执行完测试用例之后,会在项目的test-output(默认目录)下生成测试报告

  4. uniGUI试用笔记(一)

    通过向导创建一个uniGUI应用服务器,工程中有三个文件: TUniServerModule = class(TUniGUIServerModule) TUniMainModule = class(T ...

  5. HDU 2647 Reward 【拓扑排序反向建图+队列】

    题目 Reward Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants to d ...

  6. php编程疑难解决-1

    全局变量和超全局变量 如果是php脚本script 或php代码, 一定要放在 php标签内<?php ?> 内. 这样apache才会把他当做php脚本内容来解析, 才会去调用php模块 ...

  7. 【Spring Security】一、快速入手

    一 概要 Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权.这 ...

  8. C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法

    https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) ...

  9. 题解——P1133 教主的花园DP

    直接设二维状态具有后效性,会爆零 然后需要加一维 然后70 看了题解之后发现没有考虑1和n的关系 考虑之后,四十 然后懵逼 突然发现自己的ans更新写错了,导致每次ans都是第一个取30的情况的解 然 ...

  10. Nand flash code

    (1)流水灯   1>我们来看原理图                                2>datasheet                             3> ...