- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试Time Conversion Hackerrank 上的挑战,但由于某种原因,24 小时表示中的小时字段总是显示为空。这是挑战 -
Problem Statement
Given a time in AM/PM format, convert it to military (24-hour) time.
Note: Midnight is 12:00:00AM on a 12-hour clock and 00:00:00 on a 24-hour clock. Noon is 12:00:00PM on a 12-hour clock and 12:00:00 on a 24-hour clock.
另一个问题似乎是秒总是显示为 1 位数。例如,如果输入为 07:05:45PM
,我的 Hackerrank 输出为 :05:4
。
但是,代码在我的桌面上的 IntelliJ 中运行得很好 -
1:24:23AM
1
24
23AM
01:24:23
Process finished with exit code 0
和
07:05:45PM
07
05
45PM
19:05:45
Process finished with exit code 0
由于无法在 hackerrank 本身上调试解决方案,因此我不确定出了什么问题。这是我的代码 -
package algorithms.Warmup;
import java.util.Scanner;
/**
* Created by manishgiri on 1/6/16.
*/
public class TimeConversion {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String time = in.next();
String[] parts = time.split(":");
for(String part: parts){
System.out.println(part);
}
int hours = Integer.parseInt(parts[0]);
String minutes = (parts[1]);
String[] last = parts[2].split("");
String seconds = last[0]+last[1];
String timeZ = last[2]+last[3];
String finalHour = "";
if(timeZ.equalsIgnoreCase("PM")) {
if(hours == 12) {
finalHour = Integer.toString(12);
}
else {
finalHour = Integer.toString(hours + 12);
}
}
else if(timeZ.equalsIgnoreCase("AM")) {
if(hours == 12) {
finalHour = "00";
}
else if(hours == 10 || hours == 11) {
finalHour = Integer.toString(hours);
}
else {
finalHour = "0"+hours;
}
}
System.out.println(finalHour+":"+minutes+":"+seconds);
}
}
最佳答案
尝试下面的代码。希望评论有助于理解逻辑。
static String timeConversion(String s) {
// Split the string by :
String[] sTime = s.split(":");
int x = 0;
// if PM and hours >12, add additional 12 to hours
// for AM and hour = 12, set hour to 00
if(sTime[sTime.length - 1].contains("PM") && !sTime[0].equals("12"))
x = 12;
String val1 = "";
if(x == 12)
val1 = (Integer.parseInt(sTime[0]) + x) + "";
else {
if(sTime[0].equals("12") && sTime[sTime.length - 1].contains("AM"))
val1 = "00";
else
val1 = sTime[0];
}
// merge the string and return the result
String result = val1 + ":" + sTime[1] + ":" + sTime[2].substring(0,2);
return result;
}
干杯!
关于java - Hackerrank 上的时间转换挑战返回空小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34631339/
function birthdayCakeCandles(n, ar) { let max = 0; for(let i = 0; i max) { max = ar[i];
我正在尝试解决 https://www.hackerrank.com/challenges/find-hackerrank在 Obj-C 上,并通过 xCode 获得正常输出,但不是通过 hacker
我一直在努力解决这个挑战,并且有点想知道该怎么做。但是经过我所有的尝试,我只能通过测试用例,并且在提交面板中还有一个案例。之后一切都失败了 问题: 一家公司要求简化其产品分配策略,给定 n 个产品,每
问题陈述 :Sherlock and Moving Tiles TL;博士 : 给定 2 正方形;边长为 L,放置在 x-y 平面中,两个正方形 搬家沿线 y=x (沿正 x 和 y)速度为 S1 和
这个问题与this challenge有关在 HackerRank 上。它似乎在某些情况下失败了,但我不清楚算法有什么问题(很多人似乎有超时问题,这不是问题,一切都运行得很快,我看到的所有情况都通过了
我一直在应对这个挑战: Count Triplets ,经过大量的努力,我的算法并没有适用于每个测试用例。 由于在讨论中,我看到了一段代码并试图找出代码的真正功能,但我仍然无法理解这段代码是如何工作的
请参阅最近在 HackerRank 上发布的以下问题 Adam is standing at point (a,b) in an infinite 2D grid. He wants to know
(HakerRank) task是让我格式化测试用例给出的输入。 字符串和整数之间需要有 15 个空格,并且如果只有两位数,则在整数前面附加一个零,我的代码据我所知完成了这一点,并与预期的输出匹配,但
大多数人可能熟悉这个问题,但对于那些不熟悉的人来说: Given 32-bit unsigned integers flip their bits and print the resulting in
给定一个未排序的整数列表,找到它们之间绝对差最小的一对元素。如果有多对,请全部找到。 我的推理是将每个:arr[j] - arr[i] 与lowest 进行比较,如果它小于或等于该值,则将该值添加到数
我正在解决重复字符串 hackerrank 问题。但是所有的测试用例都没有运行可能是我的逻辑不正确。问题是这样的 下面给出了我的代码,其中包含没有变量的repeatedString和countingA
问题的链接如下: https://www.hackerrank.com/challenges/strange-code/problem static long strangeCounter(long
我正在尝试解决this hackerrank 上的问题,我花了一段时间才找到窍门。 技巧在于异或的属性以及数字出现在数组子集中的次数,其中子集是连续的(请注意)。 因此,如果我们有 1,2,3,子集将
我无法理解代码中这一行的用法,有人可以解释一下这个问题或提供一些不同的方法来解决这个问题 问题链接:https://www.hackerrank.com/challenges/15-days-of-l
为了问题陈述,我附上了两张照片。 /image/22zyM.png /image/5c8e6.png 我的代码: for(i=0;i #include #include #include int
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
我试图解决this 。我的算法在离线编译器中给出了正确的答案。我不知道错误在哪里。我对 C 语言完全陌生。 该问题要求创建一个函数来查找方阵左右对角线的绝对差。 这是我的网站解决方案。当我在线运行代码
我想创建一个函数来返回一个数组,其中包含完成另一个数组所需的步骤数,但有一个小条件,我只想在 0 上执行步骤,这意味着如果我有数组 c = [0,0 ,0,1,0,0,1,0] 它将把前三个 0 作为
我正在尝试 hackerrank 中的 Morgan and a String 挑战( https://www.hackerrank.com/challenges/morgan-and-a-strin
我是初学者,欢迎替代此代码。输入值后程序崩溃。我也想更多地了解这个问题,因为我已经看过很多次了。 #include #include #include #include using namespace
我是一名优秀的程序员,十分优秀!