Как я могу получить строку с большим количеством строчных символов из данного списка? - PullRequest
0 голосов
/ 09 ноября 2018

Как я могу получить строку с большим количеством строчных букв из заданного List<String>?

Я уже сделал это функционально, используя Java 10 Streams, но я хочу сделать это итеративно, используя циклы while. Но я понятия не имею, как это сделать. Это мой функциональный код.

public static Optional<String> stringSearched (List<String> pl) {
   return pl.stream()
            .max(Comparator.comparing(x->x.chars()
                                       .filter(Character::iLowerCase)
                                       .count()
            ));
}

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018
import java.util.ArrayList;
import java.util.List;

public class Something {
    public static void main(String []args){
        ArrayList<String> list = new ArrayList<String>();
        list.add("LOSER");
        list.add("wInner");
        list.add("sECONDpLACE");

        System.out.println(findMoreLowerCase(list));
    }

    private static String findMoreLowerCase(final List<String> list){
        String moreLowerCase = ""; // Tracks the current string with less lowercase
        int nrOfLowerCase=0; // Tracks the nr of lowercase for that string

        int current; // Used in the for loop
        for(String word: list){
            current = countLowerCase(word);
            if(current > nrOfLowerCase){
                // Found a string with more lowercase, update
                nrOfLowerCase = current;
                moreLowerCase = word;
            }
        }
        return moreLowerCase;
    }

    private static int countLowerCase(String s){
        // Scroll each character and count 
        int result = 0;
        for (char letter : s.toCharArray()) {
            if (Character.isLowerCase(letter)){
                ++result;
            };
        }
        return result;
    }

}
0 голосов
/ 09 ноября 2018
private String moreLowerCase(final List<String> stringList) {
  String moreLowerCase = "";
  final Iterator<String> iterator = stringList.iterator();

  while (iterator.hasNext()) {
    final String current = iterator.next().replaceAll("[^a-z]", "");
    if (current.length() > moreLowerCase.length())
      moreLowerCase = current;
    }
return moreLowerCase;
}
0 голосов
/ 09 ноября 2018

Самый простой способ - это перебрать все ваши слова и заменить не строчные буквы (регулярным выражением, например [^ a-z]) на пустые строки, а затем получить длину строки.

Самая длинная строка - та, в которой больше всего строчных букв.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...