C_01 String-Matching im Array
Gibt Ihnen ein String-Array Wörter, jeder String im Array kann als Wort betrachtet werden. Bitte geben Sie alle Wörter, die Teilzeichenfolgen anderer Wörter in Wörtern sind, in beliebiger Reihenfolge zurück.
Wenn Sie die Zeichen ganz links und / oder ganz rechts von Wörtern [j] löschen können, um Wort [i] zu erhalten, sind die Zeichenfolgenwörter [i] eine Teilzeichenfolge von Wörtern [j].
输入:words = ["mass","as","hero","superhero"]
输出:["as","hero"]
解释:"as" 是 "mass" 的子字符串,"hero" 是 "superhero" 的子字符串。
["hero","as"] 也是有效的答案。
Methode 1: Gewalt
public List<String> stringMatching(String[] words) {
LinkedList<String> list = new LinkedList<>();
for (int i = 0; i < words.length; i++) {
for (int j = 0; j < words.length; j++) {
if (i == j)
continue;
if (words[i].contains(words[j]) && !list.contains(words[j]))
list.add(words[j]);
}
}
return list;
}
Komplexitätsanalyse
- Zeitliche Komplexität: ,
- Raumkomplexität: ,
B_02 Abfrage der Anordnung mit Schlüssel
Geben Sie ein Array von Abfragen an, die überprüft werden sollen. Die Elemente im Array sind positive Ganzzahlen zwischen 1 und m. Bitte verarbeiten Sie alle abzufragenden Elemente gemäß den folgenden Regeln [i] (von i = 0 bis i = queries.length-1):
- Ordnen Sie zu Beginn P = [1,2,3, ..., m] an.
- Für das aktuelle i finden Sie die Position der Abfrageelementwarteschlangen [i] in der Anordnung P (der Index beginnt bei 0) und verschieben Sie sie dann von der ursprünglichen Position zur Startposition der Anordnung P (dh der Index ist 0) Büro). Beachten Sie, dass die Position von Abfragen [i] in P die Abfrageergebnisse von Abfragen [i] sind.
Bitte geben Sie die Abfrageergebnisse der zu überprüfenden Array-Abfrage in Form eines Arrays zurück.
- 1 <= m <= 10 ^ 3
1 <= Abfragen.Länge <= m
1 <= Abfragen [i] <= m
输入:queries = [3,1,2,1], m = 5
输出:[2,1,2,1]
解释:待查数组 queries 处理如下:
对于 i=0: queries[i]=3, P=[1,2,3,4,5], 3 在 P 中的位置是 2,接着我们把 3 移动到 P 的起始位置,得到 P=[3,1,2,4,5] 。
对于 i=1: queries[i]=1, P=[3,1,2,4,5], 1 在 P 中的位置是 1,接着我们把 1 移动到 P 的起始位置,得到 P=[1,3,2,4,5] 。
对于 i=2: queries[i]=2, P=[1,3,2,4,5], 2 在 P 中的位置是 2,接着我们把 2 移动到 P 的起始位置,得到 P=[2,1,3,4,5] 。
对于 i=3: queries[i]=1, P=[2,1,3,4,5], 1 在 P 中的位置是 1,接着我们把 1 移动到 P 的起始位置,得到 P=[1,2,3,4,5] 。
因此,返回的结果数组为 [2,1,2,1] 。
Methode 1: Simulation
public int[] processQueries(int[] queries, int m) {
ArrayList<Integer> nums = new ArrayList<>();
for (int i = 1; i <= m; i++) {
nums.add(i);
}
LinkedList<Integer> res = new LinkedList<Integer>();
for (int q : queries) {
int idx = nums.indexOf(q);
res.add(idx);
nums.remove(idx);
nums.add(0, q);
}
int p = 0;
int[] arr = new int[queries.length];
for (int i : res) {
arr[p++] = i;
}
return arr;
}
Komplexitätsanalyse
- Zeitliche Komplexität: ,
- Raumkomplexität: ,
B_03 HTML-Entitätsparser
"HTML-Entitätsparser" ist ein spezieller Parser, der HTML-Code als Eingabe verwendet und alle diese Sonderzeichenentitäten durch Zeichen selbst ersetzt.
Diese Sonderzeichen und ihre entsprechenden Zeichenentitäten in HTML umfassen:
- Doppelte Anführungszeichen: Die Zeichenentität ist "" und das entsprechende Zeichen ist "".
Einfache Anführungszeichen: Die Zeichenentität ist 'und das entsprechende Zeichen ist'.
Und Symbol: Die Zeichenentität ist & und das entsprechende Zeichen ist &.
Größer als das Vorzeichen: Die Zeichenentität ist> und das entsprechende Zeichen ist>.
Kleiner als das Vorzeichen: Die Zeichenentität ist <und das entsprechende Zeichen ist <.
Schrägstrich: Die Zeichenentität ist ⁄ und das entsprechende Zeichen ist /.
Geben Sie den Zeichenfolgentext für Sie ein, implementieren Sie einen HTML-Entitätsparser und geben Sie das Analyseergebnis des Parsers zurück.
Methode 1: Ersetzen Sie die Zeichenfolge
public String entityParser(String text) {
String res = text;
res = res.replaceAll(""", "\"");
res = res.replaceAll("'", "'");
res = res.replaceAll("&", "&");
res = res.replaceAll(">", ">");
res = res.replaceAll("<", "<");
res = res.replaceAll("⁄", "/");
return res;
}
Komplexitätsanalyse
- Zeitliche Komplexität: ,
- Raumkomplexität: ,
A_04 Anzahl der Schemata zum Färben des N x 3-Gittergraphen (kein Wechselstrom)
输入:n = 2
输出:54
输入:n = 3
输出:246
示例 4:
输入:n = 7
输出:106494
示例 5:
输入:n = 5000
输出:30228214
Tipps:
- n == grid.length
grid [i] .length == 3
1 <= n <= 5000
Methode eins:
Komplexitätsanalyse
- Zeitliche Komplexität: ,
- Raumkomplexität: ,