- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Input Format
The first line will contain the set of numbers in the sequence. Number are listed in ascending order.
Boundary Conditions
1<=M<=99999 Length of string S is from 5 to 200.
Output Format
The first line will contain the missing number M.
Example Input /Output 1
Input: 12346789
Output: 5
Input /Output 2 Input 596597598600601602
Output : 599
The numbers a sequence in the sequence are 596 597 598 599 600 601 602. 599 is the missing numbers
我的 Java 解决方案是:
我用过split(("?<=\\G..."))
等,将数字拆分为一位、二位、三位、四位和五位数字。并将数字保存到相应的数组中。然后我检查数组中两个相邻数字之间的差异 - 如果是一个,那么它将调用一个函数来查找缺失的数字。
但问题是当:
输入:
999899991000110002
输出:
10000
顺序是9998 9999 10001 10002 少了10000
当可以从 4 位数字转换为 5 位数字时,我将如何拆分字符串?有没有更好的方法来解决这个问题?
public void test(Scanner in)
{
String n = in.nextLine();
int n1 = n.length();
System.out.println(n1);
if (n1 % 2 == 0)
{
} else {
n = "0" + n;
}
System.out.println(n);
String[] one = n.split("(?<=\\G.)");
String[] two = n.split("(?<=\\G..)");
String[] three = n.split("(?<=\\G...)");
String[] four = n.split("(?<=\\G....)");
String[] five = n.split("(?<=\\G.....)");
int x = one.length;
int y = two.length;
int z = three.length;
int u = four.length;
int v = five.length;
int[] aa1 = new int [x];
int[] aa2 = new int [y];
int[] aa3 = new int [z];
int[] aa4 = new int [u];
int[] aa5 = new int [v];
for (int i = 0; i < x; i++)
{
aa1[i] = Integer.parseInt(one[i]);
}
if (aa1[1] == aa1[3] - 2)
{
findmissing(aa1, x);
}
for (int i = 0; i < y; i++)
{
aa2[i] = Integer.parseInt(two[i]);
}
if (aa2[1] == aa2[3] - 2)
{
findmissing(aa2, y);
}
for (int i = 0; i < z; i++)
{
aa3[i] = Integer.parseInt(three[i]);
}
if (aa3[1] == aa3[3] - 2)
{
findmissing(aa3, z);
}
for (int i = 0; i < u; i++)
{
aa4[i] = Integer.parseInt(four[i]);
}
if (aa4[1] == aa4[3] - 2)
{
findmissing(aa4, u);
}
for (int i = 0; i < v; i++)
{
aa5[i] = Integer.parseInt(five[i]);
}
if (aa5[1] == aa5[3] - 2)
{
findmissing(aa5, v);
}
in.close();
}
public static void findmissing(int[] bb, int value)
{
for (int i = 0; i < value - 1; i++)
{
if (bb[i] == bb[i + 1] - 1)
{
} else {
System.out.println(bb[i + 1] - 1);
}
}
}
最佳答案
如果(正如我假设的那样)数字按顺序列出,那么一个非常简单的算法将起作用:
try(toInt(S[1 .. d]), S[d+1 .. |S|])
尝试以 S[ 编码的数字开头的数字序列1..d]。如果这个序列“有效”,输出它并停止。上面的主循环在 d = 5 处停止,因为您给出了 M <= 99999 的约束,但它可以很容易地处理任意大的数字,只需让 d 一直增加到 |S|。
第二步(“尝试...”)很简单,因为您已经有了这个(候选)序列中的第一个数字 x,所以您可以轻松生成对应于下一个应该出现的数字的数字串 (即对应x+1),并与S的余数进行比较。如果x+1对应的字符串与S的前几个字符不匹配,则尝试x+2对应的字符串。如果匹配,则设置一个标志,记录 x+1 可能是缺失数字的事实,然后继续。如果 x+1 和 x+2 都不匹配,或者如果 x+1 不匹配并且已经设置了标志,我们知道初始值不可能是正确的,所以返回并让主循环尝试下一个更长的初始值:
try(x, S):
x1str = asString(x + 1)
x2str = asString(x + 2)
missing = -1 # Flag value to indicate "not found"
while |S| >= |x1str|:
if S[1 .. |x1str|] = x1str:
Delete first |x1str| characters of S
x = x + 1
x1str = asString(x + 1)
x2str = asString(x + 2)
else if S[1 .. |x2str|] = x2str and missing = -1:
Delete first |x2str| characters of S
missing = x + 1
x = x + 2
x1str = asString(x + 1)
x2str = asString(x + 2)
else
return -1 # Flag value to indicate "invalid sequence"
if |S| > 0 then return -1 # Some gunk was left over
return missing
显然,您可以将“删除 S 的第一个 ... 字符”步骤替换为仅在(不变的)字符串中使用一个偏移量,但我觉得上面的解释更容易理解。
关于java - 如何从一串数字之间没有空格的数字中找到缺失的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31028964/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!