java 字符串索引从0开始 |
您所在的位置:网站首页 › 索引为什么从0开始 › java 字符串索引从0开始 |
介绍 我有一个无限的字符串.这个字符串的长度在我们的想象中是无限的并且不能被限制,假设我们有一个这样的序列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 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |