介绍

我有一个无限的字符串.这个字符串的长度在我们的想象中是无限的并且不能被限制,假设我们有一个这样的序列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

java 字符串索引从0开始_无限字符串中的字符串的第一个索引-Java相关推荐

  1. python字符串去掉空行_从python中的字符串中删除空格

    python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...

  2. python中字符串类型的encode()方法_第五章 Python字符串常用方法详解

    5.1 Python字符串拼接(包含字符串拼接数字) 在 Python中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为: strname = "str1" ...

  3. java dos编译命令是什么_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是()...

    [单选题]下列行为中,属于绝对商行为的是 [填空题]汽车故障的变化规律可分为3个阶段,早期故障期. 和 . [填空题]无分电器点火线圈与一般点火线圈不同,其 与 没有连接,为互感作用. [简答题]练习 ...

  4. python删除字符串中重复字符_从Python中删除字符串标点符号的最佳方法

    似乎有一个比以下更简单的方法: 1 2 3import string s ="string. With. Punctuation?" # Sample string out = s ...

  5. python字符串说法错误的是_以下选项中,关于Python字符串的描述错误的

    以下选项中,关于Python字符串的描述错误的 答:Python字符串提供区间访问方式,采用[N:M]格式,表示字符串中从N到M的索引子字符串(包含N和M) 寒武纪生物大爆发的原因可能是 答:间断平衡 ...

  6. mysql查找内容某字符串出现的次数_查找MySQL中特定字符串出现的次数?

    使用LENGTH()此.让我们首先创建一个表-mysql> create table DemoTable -> ( -> Value text -> ); 使用插入命令在表中插 ...

  7. python删除字符串中的字母_在Python中删除字符串中的大写字母

    我想写一个函数消除一个字符串和2个可选参数.第一个可选参数(bad_characters)取一个字母,第三个参数(case_sensitive)取一个布尔值.该函数应该接受一个字符串s并移除bad_c ...

  8. c ++比较字符串是否相等_在C ++中比较字符串的3种方法

    c ++比较字符串是否相等 In this tutorial, we'll learn methods to compare strings in C++. Consider a scenario w ...

  9. 在字符串中标红_在C ++中标记字符串

    &在字符串中标红 In this article, we'll take a look at how we can tokenize a C++ String. 在本文中,我们将研究如何标记C ...

最新文章

  1. cannot import name 'get_all_providers'
  2. 成功解决成功解决return _iterencode(o, 0) ValueError: Circular reference detected
  3. 做shopee找代运营,如何判断一家代运营公司是否靠谱?
  4. 万分之二用百分之怎么表示_万分之几用百分符号怎么表示 万分之五怎么写?0.5%...
  5. 【虚拟化】docker创建mysql镜像,docker内部操作mysql
  6. opengl加载显示3D模型IFC类型文件
  7. django建表报错
  8. python socket epoll
  9. 整合nagios+cacti遇到问题及解决办法
  10. slice matlab,Matlab画图之slice命令
  11. ubuntu虚拟机使用笔记——9、vmware卸载,重新安装ubuntu,重安后不能共享文件
  12. JS实现页面保存为图片
  13. 软件测试面试题之自动化测试题大合集(上)
  14. 《笨办法学python》第39课—— 列表的操作
  15. sed搜索某行在行末追加_sed在行首或者行尾添加内容
  16. Jquery实现AJAX异步通信
  17. 【Shading】Shadow Mapping 阴影映射
  18. 递推最小二乘RLS推导
  19. Wed APIS-Window对象、本地存储、数组的map()方法、数组的join()方法
  20. 什么是机器学习,机器学习的用途?

热门文章

  1. Lua 中写 C 扩展库时用到的一些技巧
  2. Asp.net MVC3.0 入门指南 6 审视编辑方法和视图
  3. 协程分析之 context 上下文切换
  4. 84.负载均衡哈希算法:ip_hash与hash模块
  5. 计算机科学与技术a类学科,清华大学a类学科有哪些?附清华a类学科名单
  6. python自助电影售票机_手把手教你用python抢票回家过年(代码简单)
  7. 猜数游戏软件的设计开发系统测试参考
  8. linux硬盘类型怎么选,如何选择linux系统安装类型
  9. Python+OpenCV:特征匹配(Feature Matching)
  10. 一张图了解浏览器渲染页面的过程