Algorithmus:
- Konvertieren
big
und small
String's
zu char[]
des Arrays bigC
und smallC
jeweils
- Iterate über jedes Zeichen von
big
String
- Bei jedem Index während der Iteration, identifizieren ob es eine Unterkette möglich ist
- aktuelle Zeichen beginnen, wenn eine Unterkette Möglichkeit ist, durch die Länge des
small
String
- Andernfalls den Index in
big
String Iteration voranbringen, ersetzen Sie den Charakter von *
Code:
public class StringRetainer {
public static void main(String args[]) {
String big[] = {"12xy34", "12xt34", "12xy34", "12xy34xyabcxy", "78abcd78cd"};
String small[] = {"xy", "xy", "1", "xy", "78"};
for(int i = 0; i < big.length & i < small.length; i++) {
System.out.println("Input: big = \"" + big[i] + "\", small = \"" + small[i] + "\" output : \"" + stars(big[i], small[i]) + "\"");
}
}
public static String stars(String big, String small) {
//String to char[] array conversions
char[] bigC = big.toCharArray();
char[] smallC = small.toCharArray();
//iterate through every character of big String and selectively replace
for(int i = 0; i < bigC.length; i++) {
//flag to determine whether small String occurs in big String
boolean possibleSubString = true;
int j = 0;
//iterate through every character of small String to determine
//the possibility of character replacement
for(; j < smallC.length && (i+j) < bigC.length; j++) {
//if there is a mismatch of at least one character in big String
if(bigC[i+j] != smallC[j]) {
//set the flag indicating sub string is not possible and break
possibleSubString = false;
break;
}
}
//if small String is part of big String,
//advance the loop index with length of small String
//replace with '*' otherwise
if(possibleSubString)
i = i+j-1;
else
bigC[i] = '*';
}
big = String.copyValueOf(bigC);
return big;
}
}
Hinweis:
- Dies ist eine mögliche Lösung (legacy Art und Weise zu tun)
- Es gibt offenbar keinen straight forward Weg, dies zu machen geschehen mit Hilfe der integrierten in
String
/StringBuffer
/StringBuilder
Methoden
Ihr Java-Programm ist unvollständig, schrecklich formatiert und erklärt nicht wirklich, wie die Dinge zusammen gehen sollten. Es ist unklar, wie Sie helfen können. –