n個の文字列で共通の文字

Akashさんkunwar:

I nは与えられた文字列内の共通の文字数を表示する関数をしようとしてメートル。(文字が複数回使用することができることに注意してください)

すべての文字が複数回繰り返さずに、私は2弦のためにそれをやったが、n個の文字列でこの操作を実行するために苦労しています。

私は私のコードを掲載しています。

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

彼らは同じ文字が文字列内で複数回存在することができ、あなたが代わりにノーをチェックし、それらの文字を排除することになっていないことのチャンスかもしれません。時代の彼らは、他の文字列で繰り返されています。用など

 3
 abacd
 aaxyz
 aatre

出力は2でなければなりません

私はJavaでのソリューションを得れば、それは良くなります

マイケルZiober:

あなたはすべて変換する必要Stringに秒SetCharactersおよび最初の1からすべてを保持します。以下は、ソリューションを最適化することができますが、あなたが一般的な考え方を理解しておく必要があります多くの場所があります。

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;
    }
}

上記のコードを印刷:

[n, o]

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=232217&siteId=1