这件事确实让我很为难。所以最终我决定向你们寻求帮助。也许,你可以回顾一下并告诉我哪里出错了。
@ https://www.hackerrank.com/challenges/flipping-bits
基本上:
输入 = 数字
- 将其转换为二进制字符串。
- 翻转位(设置全 0 并重置全 1)
- 输出你这样做得到的数字。
我现在已经硬编码了一个数字,正如问题中提到的那样(= 2147483647)
问题是:它给我的输出是:
0
Run Code Online (Sandbox Code Playgroud)
代码:
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 …Run Code Online (Sandbox Code Playgroud) 我不明白 Java 的 WritableRaster 类是如何工作的。我尝试查看文档,但不明白它如何从像素数组中获取值。另外,我不确定像素阵列由什么组成。
这里我解释一下。
我想要做的是:Shamir 在图像上的秘密分享。为此,我需要在 BuferedImage 图像中获取图像。我拍了一张秘密照片。通过在图像的每个像素上运行“函数”来创建共享。(基本上通过某种方式改变像素值)
片段:
int w = image.getWidth();
int h = image.getHeight();
for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
{
int pixel = image.getRGB(j, i);
int red = (pixel >> 16) & 0xFF;
int green = (pixel >> 8) & 0xFF;
int blue = (pixel) & 0xFF;
pixels[j][i] = share1(red, green, blue);
Run Code Online (Sandbox Code Playgroud)
// 现在采用那些 rgb 值。我使用一些函数更改它们并返回一个 int 值。像这样的东西:
public int share1 …Run Code Online (Sandbox Code Playgroud)