java 字符串索引从0开始

您所在的位置:网站首页 索引为什么从0开始 java 字符串索引从0开始

java 字符串索引从0开始

#java 字符串索引从0开始| 来源: 网络整理| 查看: 265

介绍

我有一个无限的字符串.这个字符串的长度在我们的想象中是无限的并且不能被限制,假设我们有一个这样的序列String:

“123456789…”

数字9之后的点实际上表示下一个序列.因此,它将是这样的:

“…7891011121314…”

要求

在本节中,我想解释有关要求.要求是找到输入String首次出现的索引(称为n).让我给你举个例子:

例子1

n=”3″

First Index of n = 2

例子2

n=”910″

First Index of n = 8

问题

我已经对算法进行了编码,以找到字符串n的索引.但是该算法只是一个while循环,用于检查n的索引,如果找不到n的索引,则一个接一个地添加下一个序列号.我想要一个更好的算法来找到n第一次出现的索引,而不必依赖循环或较少循环.至少,如果n的值很大(例如:123456790或62716855),该算法的运行时间不会超过2秒.

– -编辑 – –

我的代码段:

while(!num.contains(s)){

num +=start.toString();

start = start.add(BigInteger.ONE);

}

解决方法:

这是如何解决此问题的一般说明.将其转换为Java仍然很困难.

输入的String基本上是所有自然数1 2 3 4 5 6 8 9 10 11 …的无限序列.

我相信练习的重点是确定子字符串n所属的输入字符串的自然数的第一个子序列,然后在不实际构造大的“无限”字符串的情况下计算其索引.

为此,您必须尝试将子字符串n拆分为一个数字递增的序列,该序列应具有尽可能少的数字.

首先,您必须检查子字符串n是否创建一个由一位数字组成的序列.就是这种情况,例如,如果n == 345678(请注意,n可能同时包含一位数字和两位数字,例如n == 345678910,您也应该能够识别).

如果在该步骤中失败,则应查找两位数的序列.例如,如果n == 33343536,就是这种情况.现在,这可能会变得更加棘手,因为n == 2333435363也是两位数字的序列,但是序列的前导和尾数(32和37)是被截断.

如果再次失败,则将查找3位数字的序列.

如果找不到任何序列,则将整个子字符串n视为大字符串中的单个数字.

现在,假设n是199319941995,您在上一步中发现序列中的第一个数字是1993.剩下的工作是计算输入String中数字1993的索引.您知道单位数字采用1 * 9索引.两位数字取2 * 90索引.三位数代表3 * 900索引. 1000和1993之间的3位数字采用4 * 993索引.因此1993年的索引是1 * 9 2 * 90 3 * 900 4 * 993,这是子字符串199319941995的第一个索引.

标签:indexof,sequence,string,java

来源: https://codeday.me/bug/20191025/1931139.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3