【发布时间】:2023-04-07 10:37:02
【问题描述】:
简介
我有一个无限的字符串。这个字符串的长度在我们的想象中是无限的,不能被限制。假设我们在String中有一个这样的序列:
“123456789...”
数字 9 后面的 点 实际上代表下一个序列。所以,它会是这样的:
“...7891011121314...”
要求
在本节中,我想解释一下需求。要求是找到输入字符串第一次出现的索引(称为n)。举个例子吧:
示例 1
n = "3"
n = 2 的第一个索引
示例 2
n = "910"
n = 8 的第一个索引
问题
我已经编写了算法来查找字符串 n 的索引。但是该算法只是一个while循环来检查n的索引,如果没有找到n的索引,则一个接一个地添加下一个序列号。我想要一个更好的算法来找到 n 的第一次出现的索引,而不依赖于循环或更少的循环。至少,如果 n 的值很大(例如:123456790 或 62716855),算法的运行时间不会超过 2 秒。
---编辑---
我的代码片段:
while(!num.contains(s)){
num +=start.toString();
start = start.add(BigInteger.ONE);
}
这是我的完整代码:My Full Code
【问题讨论】:
-
显示你已有的代码。
-
很好的练习,但是……你试过什么?
-
说算法运行时间超过 2 秒是没有意义的。根据使用的机器和代码的质量,相同的算法可能需要非常不同的时间才能找到解决方案。你应该在这里考虑的是time complexity。还请提供您的代码,以便我们了解除代码复杂性之外的其他导致性能下降的潜在原因。
-
我已经编辑了问题和我的代码和完整代码。请看一下。
标签: java string algorithm sequence indexof