Ich versuche, ein Programm zum Zählen von gemeinsamen Elementen zu machen, die in allen Strings in einem String [] -Array vorkommen. Ich habe folgende: -Gemeinsame Elemente in einem String-Array zählen
A Master-Array und ein Flag Array sowohl der Größe 26
nun für jede Saite: Ich Markierungsfrequenz 1 für jedes Zeichen das erscheint, in der Zeichenfolge ohne Inkrementierung in Flag Array.
Jetzt bin Hinzufügen ich die Werte von Flag-Array auf Werte von Master-Arrays entspricht
mein Code sieht wie folgt aus
for(String str : arr)
{
for(char ch : str.toCharArray())
{
flag[ch - 97] = 1;
master[ch - 97] =master[ch -97] + flag[ch - 97];
}
}
Mein Plan schließlich ist auf die Elemente in der Master-Array zu zählen, die Wert gleich um die Länge eines String-Arrays einzugeben. Diese Anzahl wird die Anzahl der Zeichen darstellen, die allen Strings gemeinsam sind
Aber mein Code hat einen Fehler.
Wenn ein String doppelte Elemente enthält, zum Beispiel "Ball" (mit 2 ls). Der entsprechende Wert des Elements in Master Array wird wieder inkrementiert. Das macht seinen Wert größer als das, was ich wollte.
Also das ist was ich getan habe.
for(String str : arr)
{
newstr = ""; //to keep track of each character in the string
for(char ch : str.toCharArray())
{
int counter = 0;
for(int i = 0; i < newstr.length();i++)
{
char ch2 = newstr.charAt(i);
if (ch == ch2)
{
counter = counter + 1; //if duplicate
break;
}
}
if(counter == 1)
{
break;
}
flag[ch - 97] = 1;
master[ch - 97] =master[ch -97] + flag[ch - 97];
newstr = newstr + ch;
}
}
Ist das der richtige Ansatz? Oder könnte dieser Code optimiert werden?
Also was willst du erreichen? – Pratham
Nach 'counter = counter + 1;' können Sie 'return'-Anweisung schreiben. Damit kann die nächste if-Bedingung vermieden werden. – procrastinator
@procrastinator Ich kann nicht 'zurückkommen', da noch andere Zeichenfolgen im zu testenden Array übrig sind. –