Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java функция поиска под-строки. Помогите

Енот Енотович Ученик (103), на голосовании 1 год назад
Помогите с кодом пожалуйста.
Функция должна возвращать двух мерный массив, в первую колонку мы сохраняем количество совпавших символов, а во вторую процент совпадения слова в основной строке с искомым словом.
Например: искомая строка "good", а в основной строке есть слово "goo", в этом случае у нас совпали 3 символа , это 75% процентов от общего количество символов искомой строки.
При не нахождении ни одного совпадения, возвратить -1.
Нельзя юзать методы equals() contains() и тд.

Вот сам код. Недоделанный. Прошу помогите

import java.util.Scanner;
public class FindKeyWord {
public static void main(String[] args) {
Scanner scan = new Scanner ( System.in );

String words = "goo goo good go goody";
System.out.println("Основная строка: "+words);
System.out.println("Искомая строка: ");
String keyWord = scan.nextLine(); // good
String[][] result = new String[2][5];
konvert(result, words, keyWord);
show(result);



}

public static void konvert(String[][] result, String words, String keyword) {
char empty = ' ';
int counter = 0;
int charMath = 0;
int indexMath = 0;


for (int i = 0; i <words.length(); i++) {
if(empty == words.charAt(i)){
counter = 0;
}else if(keyword.charAt(counter) == words.charAt(i)){
counter++;
charMath++;
}else{
result[1][indexMath] = Integer.toString(charMath);
result[0][indexMath] = "%";
indexMath++;
charMath = 0;
}
}
}

public static void show(String[][] result) {

for (int i = 0; i < result[0].length; i++) {
System.out.print(result[0][i]);
System.out.print(result[1][i]);
System.out.println();
}

}

}
Голосование за лучший ответ
Матвей Виштаков Знаток (489) 2 года назад
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Console.WriteLine(blabla(5, 5));


static int blabla(int k, int n)
{
if (k < 1 || n < 1 || n > 9 * k)
throw new ArgumentException("n or k");
if (k == 1)
return 1;
return Enumerable.Range(0, 10)
.Reverse()
.TakeWhile(i => n - i <= 9 * (k - 1))
.Select(i => blabla(k - 1, n - i))
.Sum();
}
Енот ЕнотовичУченик (103) 2 года назад
Можно упростить как то?
Похожие вопросы