Как написать метод, возвращающий "Миссисипи" слово с наибольшим количеством дубликатов в массиве ?
массив таков
String[] words = {"Apple", "cheese", "Mississippi", "beer", "hand", "sandwich", "kadabra"};
мои решения были примерно такими
1-
public static String LongestWord() { String[] words = {"Apple", "cheese", "Mississippi", "beer", "hand", "sandwich", "kadabra"}; String maxLength = words[0]; String newString = ""; for (String str : words) { for (int i = 0; i < str.length(); i++) { { for (int j=i+1; j<str.length(); j++){ if="" (str.charat(i)="=" str.charat(j)){ newstring+="str.charAt(i); } } (newstring.length()=""> maxLength.length()) { maxLength = newString; } } return maxLength; }
проблема с приведенным выше решением заключается в том, что оно не проходит через все символы строки, начинающейся с "i", и перед "i" может быть дубликат, и он не обнаружит его, поэтому он не работает.
2-
public static String LongestWord() { String[] words = {"Apple", "cheese", "Mississippi", "beer", "hand", "sandwich", "kadabra"}; String maxLength = words[0]; String newString = ""; for (String str : words) { for (int i = 0; i < str.length(); i++) { { for (int j=str.length()-1; j>=0; j--){ if (str.charAt(i) == str.charAt(j)){ newString+=str.charAt(i); } } } } if (newString.length() > maxLength.length()) { maxLength = newString; } } return maxLength; }
эта буква ближе к работе, но у нее все еще есть проблема, и это когда, например, "i=0" и "j" достигают 0, то она будет равна, потому что это одна и та же буква, но не дубликат, и я пробовал много других тоже, но ничего не получалось.
Что я уже пробовал:
Я пробовал много решений, но ни одно из них не сравнивало всех персонажей друг с другом.
Patrice T
Вам нужно показать свою работу.
CPallini
Как вы считаете дубликаты? Например, каков ожидаемый результат для "Миссисипи"?
hiwa doski
это 4 "s"
CPallini
Почему бы и нет - я...s? Есть также четыре - я...s. или вы должны считать буквы, которые входят в соседние пары?
hiwa doski
я не думаю, что это имеет значение, пока нет слова с более чем 4 дублированными символами.
CPallini
Предположим, что у вас есть "ророр" и "foo" У кого из них больше дубликатов?
hiwa doski
"roror" , потому что он имеет три дублируются "р" и "Foo" есть только два дублируются "о" так "roror" должны быть возвращены.
CPallini
Тогда смотрите мое решение.
Maciej Los
Пожалуйста, обновите свой вопрос и вставьте соответствующий код между pre
теги.
hiwa doski
но разве ты уже не сделал этого?
Maciej Los
Да, я так и сделал, но оно кажется неполным или недействительным.
hiwa doski
я думаю, что все в порядке, но взгляну на него и поблагодарю вас.