Я пытаюсь применить двоичный поиск в строке, содержащей целые числа. Это мой кодПреобразование из char в int
public class abcd {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String num="";
for(int i=0;i<5;i++){
num += input.next();
}
if(bs(5,num))
System.out.println("Yep");
else
System.out.println("Nope");
}
public static boolean bs(int key,String N){
int low=0,high=N.length()-1,mid;
while(high>=low){
mid = (high+low)/2;
if(N.charAt(mid) == key)
return true;
else if(N.charAt(mid) < key)
low = mid+1;
else
high = low-1;
}
return false;
}
}
bs - метод двоичного поиска. Мой вход уже отсортирован. Теперь я хочу найти, было ли введено 5, но даже если 5 входит в качестве ввода, я всегда получаю «Nope» в качестве вывода, что означает, что bs всегда возвращает false.
Я понимаю, что charAt возвращает символ, и вот в чем проблема. Но если я хочу преобразовать этот символ в int, что мне делать? Например, как мне преобразовать '4' в 4?
строки не содержат целые числа. Они могут содержать цифры ... Кроме того, что более важно, бинарный поиск работает только на отсортированных наборах ... –
int four = 4 + '0'; – BevynQ
@MitchWheat Я даю отсортированный вход – tofu