Найти длину самой длинной последовательности двоичного файла
Как звучит само задание:
Найти длину самой длинной последовательности двоичного файла которая состоит из байтов со значением 0.
Слова преподавателя:
К примеру:
Если у Вас есть двоичной файл, байт которого выглядят так:
1 2 0 0 0 14 15 16 0 0 0 0 0 10 12 14 15 0 12
То длина самой длинной последовательности, состоящий из байтов со значением 0 - 5
Не могу понять, что именно от меня хотят, заранее спасибо!
Пишу на Java, выполняю ввод через BufferedReader, не думаю, что это столь важно, но все же упомяну.
import java.io.*;
public class LongestZeroSequenceLength {
long longestZeroSequenceLength(String filename) throws IOException {
int result = 0;
try {
FileInputStream fis = new FileInputStream(filename);
byte[] buf = new byte[1024];
int count = 0;
int readed = -1;
while((readed = fis.read(buf)) != -1){
for(int i = 0;i < readed;i++){
System.out.println(buf[i]);
if(buf[i] == 0){
count++;
} else{
if(result < count){
result = count;
count = 0;
}
}
}
}
} catch(IOException e){
e.printStackTrace();
}
return result;
}
}
Ответы (1 шт):
Автор решения: doodocina
→ Ссылка
Вот код, не решающий Вашу проблему:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
System.out.println(getЧислоПоследовательныхБайтов("file"));
}
public static int getЧислоПоследовательныхБайтов(String filepath)
{
int result = 0;
File file = new File(filepath);
try(FileInputStream fis = new FileInputStream(file))
{
int count = 0;
byte[] buf = new byte[(int)file.length()];
fis.read(buf);
fis.close();
for(int i = 0; i < buf.length; i++)
{
if(buf[i] >= 0 && buf[i] <= 5)
{
count++;
}
else if(count != 0)
{
if(count > result)
{
result = count;
}
count = 0;
}
}
if(count > result)
{
result = count;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}