【发布时间】:2025-12-07 16:15:02
【问题描述】:
package com.company;
public
class ToBinary
{
public String convertToBinary( int n)
{
return Integer.toBinaryString( n );
}
public int howMany(int number)
{
String x = convertToBinary(number);
char[] y = x.toCharArray();
int counter=0; //how many seq in binary number
/*
sequence counts if 0s are surrounded by 1 f.ex 101 1001 is 1 sequence
100100101 is 3 seq
1010 is 1 seq
*/
int temp=0;
int maxGlobal=0;
int maxLocal =0;
for(int i=1;i<y.length-1;i++)
{
if(y[i]!=y[i-1] && y[i]!=y[i+1])
counter++;
if(y[i]==0 && y[i-1]==0)
{
maxLocal +=1;
}
if(y[i]==0 && y[i+1]==1)
{
maxLocal +=1;
maxGlobal= maxLocal;
maxLocal =0;
}
else
continue;
}
System.out.println(maxGlobal);
return counter;
}
}
我写了一些代码,但我不知道我在这里做错了什么。
【问题讨论】:
-
您好,欢迎您。请说明您遇到的问题,例如指定输入、预期输出以及您得到的结果(错误的结果?异常?有什么问题吗?)
-
与 couter 搭配时,输出的数字很好,但二进制数中最长的 0 序列却不是。我试图一步一步地在一张纸上做笔记,但我仍然不知道我被困在我递增计数器的位置下方。
-
在 maxGlobal 中总是输出 0
-
我认为您可能没有注意到的一件事是您正在检查 y[i] 的值,例如 0 和 1.. 当您应该检查“0”和“1”时,因为您将其转换为 char 数组。
-
为什么
1011001是 1 个序列,100100101是三个序列 - 如果 0 的最小计数为 2,则应该是 2 个序列?
标签: java string binary sequence