Java 8 Stream, obtenga la longitud de la cadena debido a varias condiciones

Tengo un programa que calcula las ocurrencias de d, por ejemplo, s = "dda"y n = 10las repetiré hasta obtener, s.length = 10por ejemplo, ddaddaddadel result = 7d.

He hecho esto en el bucle básico:

int count = 0;
String s = "dda";
int n = 10;
for (int i = 0; i < s.length(); i++) {
     if (s.charAt(i) == 'd')
         count++;
}

for (int i = 0; i < n % s.length(); i++) {
     if (s.charAt(i) == 'd')
         count++;
}
return count * (n / s.length());

Por lo tanto, estoy tratando de hacer eso usando transmisiones, y me pregunto cómo puedo hacerlo.

Lo que ya logré:

return s.chars().filter(x -> x == 'd').count() * (n / s.length()) + (n % s.length());

Sé el problema en esa última parte (n % s.length()). Necesito verificar si el índice contiene do no, pero no sé cómo hacerlo.

Respuesta 1

todo lo que necesita agregar a su cálculo es subcadenas por recordatorio y repetir el recuento: -

    return s.chars().filter(x -> x == 'd').count() * (n / s.length()) +
            s.substring(0, n % s.length()).chars().filter(x -> x == 'd').count();

EDITAR : si, por alguna razón, no le gusta la subcadena antigua, puede reemplazarla con una secuencia de entradas desde 0 hasta el recordatorio:

    return s.chars().filter(x -> x == 'd').count() * (n / s.length()) +
            IntStream.range(0, n % s.length()).filter(i -> s.charAt(i)== 'd').count();

Sin embargo, la pregunta recuerda si esta versión completa es más completa / legible.

Respuesta: 2

Tengo una función que toma una clase <GenericType <Constraint>>. Cuando paso una subclase de ese GenericType <Constraint>, los errores del compilador con el mensaje: Inferencia de tipo falló. ...

Estoy trabajando en algunos desafíos usando la recursividad en Java (un nuevo concepto para mí). Actualmente estoy trabajando en un método recursivo que da la suma de dígitos dado un parámetro largo (n). Salida prevista: ...

Quiero registrar eventos de la consola WebView. A veces recogen peculiaridades en el navegador subyacente utilizado y pueden ayudar con la resolución de problemas. Es posible utilizar una clase de implementación de Sun para interactuar ...

Tengo un código a continuación que utilizo para consultar la base de datos y agregar datos a la lista, Consulta q = session.createQuery ("select tally_receipt_prefix, tally_receipt_no, tally_head, tally_amount ...