caracteres comunes en cadenas de n

kunwar Akash:

Yo estoy tratando de hacer una función que imprime el número de caracteres comunes en cadenas dadas n. (Nota que los caracteres se pueden usar varias veces)

Estoy luchando para llevar a cabo esta operación en las cuerdas n Sin embargo, lo hice por 2 cadenas, sin ningún carácter repiten más de una vez.

He publicado mi código.

public class CommonChars {

    public static void main(String[] args) {
        String str1 = "abcd";
        String str2 = "bcde";
        StringBuffer sb = new StringBuffer();
        // get unique chars from both the strings

        str1 = uniqueChar(str1);
        str2 = uniqueChar(str2);
        int count = 0;
        int str1Len = str1.length();
        int str2Len = str2.length();

        for (int i = 0; i < str1Len; i++) {

            for (int j = 0; j < str2Len; j++) {

                // found match stop the loop
                if (str1.charAt(i) == str2.charAt(j)) {
                    count++;
                    sb.append(str1.charAt(i));
                    break;
                }
            }

        }   
        System.out.println("Common Chars Count : " + count + "\nCommon Chars :" + 
        sb.toString());
    }


    public static String uniqueChar(String inputString) {
        String outputstr="",temp="";
        for(int i=0;i<inputstr.length();i++) {
            if(temp.indexOf(inputstr.charAt(i))<0) {
                temp+=inputstr.charAt(i);
            }
        }
        System.out.println("completed");
        return temp;
    }

}
3 
abcaa
bcbd
bgc
3

pueden ser sus posibilidades de que un mismo personaje puede estar presente varias veces en una cadena y no se supone que para eliminar esos caracteres en lugar comprobar el no. de veces que se repiten en otras cadenas. para, por ejemplo

 3
 abacd
 aaxyz
 aatre

salida debe ser 2

será mejor si me da solución en Java

Michael Ziober:

Usted tiene que convertir todos los Strings a Setde Characters y retener todo desde la primera. A continuación la solución tiene muchos lugares que podrían ser optimizado, pero usted debe entender idea general.

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {

    public static void main(String[] args) {

        List<String> input = Arrays.asList("jonas", "ton", "bonny");

        System.out.println(findCommonCharsFor(input));
    }

    public static Collection<Character> findCommonCharsFor(List<String> strings) {
        if (strings == null || strings.isEmpty()) {
            return Collections.emptyList();
        }

        Set<Character> commonChars = convertStringToSetOfChars(strings.get(0));
        strings.stream().skip(1).forEach(s -> commonChars.retainAll(convertStringToSetOfChars(s)));

        return commonChars;
    }

    private static Set<Character> convertStringToSetOfChars(String string) {
        if (string == null || string.isEmpty()) {
            return Collections.emptySet();
        }

        Set<Character> set = new HashSet<>(string.length() + 10);
        for (char c : string.toCharArray()) {
            set.add(c);
        }

        return set;
    }
}

imprime el código de seguridad:

[n, o]

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=232220&siteId=1
Recomendado
Clasificación