【Wöchentlich】 Nr. 184

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: O ( ) O ()
  • Raumkomplexität: O ( ) O ()

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: O ( n ) O (n)
  • Raumkomplexität: O ( n ) O (n)

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("&quot;", "\"");
    res = res.replaceAll("&apos;", "'");
    res = res.replaceAll("&amp;", "&");
    res = res.replaceAll("&gt;", ">");
    res = res.replaceAll("&lt;", "<");
    res = res.replaceAll("&frasl;", "/");
    return res;
}  

Komplexitätsanalyse

  • Zeitliche Komplexität: O ( n ) O (n)
  • Raumkomplexität: O ( 1 ) O (1)

A_04 Anzahl der Schemata zum Färben des N x 3-Gittergraphen (kein Wechselstrom)

Fügen Sie hier eine Bildbeschreibung ein

输入: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: O ( ) O ()
  • Raumkomplexität: O ( ) O ()

Veröffentlicht 714 Originalarbeiten · erntete Lob 199 · betrachtet 50000 +

Ich denke du magst

Origin blog.csdn.net/qq_43539599/article/details/105466164
Empfohlen
Rangfolge