Здравейте,
Дали някой случайно има примерно решение на задачата “Title search” и ако не му е проблем да
го качи , тъй като имам малки проблеми с нея ?
Благодаря предварително
Здравейте,
Дали някой случайно има примерно решение на задачата “Title search” и ако не му е проблем да
го качи , тъй като имам малки проблеми с нея ?
Благодаря предварително
Помня тази задача. И мен много ме беше измъчила. Ще потърся и ако го намеря, ще ти пратя решението.
Намерих го.
import java.util.Scanner;
public class MockExam4_3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] thePhrase = scanner.nextLine().split("");
int num = Integer.parseInt(scanner.nextLine());
String[] allWords = new String[num];
for (int i = 0; i < num; i++) {
allWords[i] = scanner.nextLine();
}
for (String word : allWords) {
String[] letters = word.split("");
int j = 0;
int count = 0;
for (int i = 0; i < letters.length; i++) {
boolean letterFound = false;
for (; j < thePhrase.length; j++) {
if (letters[i].equals(thePhrase[j])) {
count++;
j++;
letterFound = true;
break;
}
}
if (!letterFound) {
break;
}
}
if (count < letters.length) {
System.out.println("No such title found!");
continue;
}
j = 0;
if (count == letters.length) {
for (int i = 0; i < letters.length; i++) {
for (; j < thePhrase.length; j++) {
if (letters[i].equals(thePhrase[j])) {
thePhrase[j] = "#";
j++;
break;
}
}
}
}
for (int i = 0; i < thePhrase.length; i++) {
if (thePhrase[i].equals("#")) {
continue;
}
System.out.print(thePhrase[i]);
}
System.out.println();
}
}
}
Проучи го разбери как работят вътрешните цикли. Успех!
Извинете ме ако задавам глупав въпрос, но не разбирам условието докрай, а именно последния примерен Output: Input
cfoadset
2
code
slow
fast
No such title found!
Защо въпреки че се съдържа “s” във fast във примерния отговор се дава че не е намерено нищо? Може би аз не разбирам нещо … Също и Constraints
И аз това точно , изглежда , бях объркал в задачата.
Търси се цялата последователност от букви ( sequence) ,
а не да маха всяка повтаряща се буква.
И още нещо , което не трябва да се забравя е, че след всеки модифициран ред, работим с вече модифицирания а не с началния…
Здравей,
Ако може малко да ме просветиш, защо декларираш на две места променливи извън for loop и добавяш итерация а не в скобите.
например тук
j = 0;
if (count == letters.length) {
for (int i = 0; i < letters.length; i++) {
for (; j < thePhrase.length; j++) {
if (letters[i].equals(thePhrase[j])) {
thePhrase[j] = “#”;
не мога да схвана причината, но отчитам разликата в крайния резултат.
Благодаря
Привет,
целта на извеждането на итератора пред външния цикъл е той да не се занулява. Ползата от това е, че ако сме намерили дадена буква примерно на 4-то място, следващата буква да се търси от 5-то място напред. В противен случай ще ни даде неправилна последователност и грешен резултат.
Много багодаря за разяснението Ивайло,
сега всичко е ясно и си дойде на мястото.