我的测试中遇到了这个问题,但我不知道如何解决这个问题"这两种问题都没有高效的执行时间..
号码x被称为" sufix"对于y,仅当通过在数字的左侧添加至少一个数字从x获得y时。示例:502是11502的sufix,因为如果你添加" 11"在" 502"前面你得到号码" 11502"。 文本文件包含一个数字数组,最大值为1.000.000.000,每个数字必须为0到1.000.000.000。在屏幕上显示,严格上升,数组中的每个数字,属于[100到999],它是数组中至少一个数字的sufix。如果数组不包含后缀编号,则在屏幕上显示消息"没有后缀编号"。 该算法必须在执行时有效。
如果我们有这个阵列" 11502 49 54321 6149 76149 123 123 502 4321 321 321",结果必须是" 321 502"
答案 0 :(得分:2)
创建一个数组has_suffix
,其条目为1000个布尔元素,并将每个元素设置为False
。
遍历每一行。对于一行中的每个数字 i ,如果它超过999,找到最后三位 i _ ,并设置has_suffix[i_] = True
如果您遇到2199,请设置has_suffix[199] = True
。例如:
如果遇到132,请忽略它。
如果你遇到23,请忽略它。
创建一个数组suffix
,其条目为1000个布尔元素,每个元素设置为False
。
在每一行上再次迭代。对于一行中的每个数字 i ,如果它在100到999之间且has_suffix[i] == True
,请设置suffix[i] = True
。例如:
如果您遇到2199,请忽略它。
如果你遇到23,请忽略它。
如果您在132中运行,请检查has_suffix[132]
。如果是True
,请设置suffix[132] = True
。
将suffix
的条目从100到999迭代,并打印出True
条目的索引。例如,
True
的唯一索引是321和502,则打印" 321"和" 502"。