- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个真的让我很辛苦。所以最终我决定向你们寻求帮助。或许,您可以查看它并告诉我哪里出错了。
@ https://www.hackerrank.com/challenges/flipping-bits
基本上:
Input = Number
- Convert it to binary String.
- Flip the bits (Set all 0's and reset all 1's)
- Output the Number you get by doing it.
I have hard-coded a number for now, as it was mentioned in the question (= 2147483647)
问题是:它给我的输出是:
0
代码:
public class FlippingBits {
private static String flipBits(String binaryOrig){
String flippedString = "";
for(int i = 0; i<binaryOrig.length(); i++){
if(binaryOrig.charAt(i) == '1')
flippedString += '0';
else
flippedString += '1';
}
return flippedString;
}
private static long getNum(String flippedString){
long new_number = 0;
for(int i = 0; i < flippedString.length(); i++){
new_number = (2*new_number) + (flippedString.charAt(i) - '0');
}
return new_number;
}
public static void main(String[] args) {
long num = 2147483647;
String numBinaryString = Long.toBinaryString(num);
String flippedString = flipBits(numBinaryString);
System.out.println(Long.toString(getNum(flippedString)));
}
};
谁能告诉我这是怎么回事!这是在尝试 3-4 小时后。对不起,如果它是微不足道的。
提前致谢。
编辑:问题的摘录:
"以1为例,无符号32位是
00000000000000000000000000000001
然后翻转我们得到
1111111111111111111111111111110
这又是 4294967294"
所以,我觉得它必须做一些长期为 64 位的事情。 !?
最佳答案
因为 Java 没有无符号类型,并且以补码形式解释整数,所以您需要解决这两个问题。
对于第一点,我们可以使用一个long
来存储值。对于第二点,我们可以用 0x00000000ffffffff
进行位掩码,得到我们想要的 32 位部分。
int original = 1;
long flipped = ~original & 0x00000000ffffffffL;
System.out.println(flipped);
// outputs 4294967294
Java 拥有处理上述任务的工具 - 除非万不得已,否则我不会闯入 String
操作。
关于java - @HackerRank : FlippingBits. 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405143/
这个真的让我很辛苦。所以最终我决定向你们寻求帮助。或许,您可以查看它并告诉我哪里出错了。 @ https://www.hackerrank.com/challenges/flipping-bits 基
我是一名优秀的程序员,十分优秀!