【Semanal】 No.184

C_01 Cadena coincidente en matriz

Le da una cadena de palabras de matriz, cada cadena en la matriz puede considerarse como una palabra. Devuelva todas las palabras que son subcadenas de otras palabras en cualquier orden.

Si puede eliminar los caracteres más a la izquierda o más a la derecha de las palabras [j] para obtener la palabra [i], la cadena de palabras [i] es una subcadena de palabras [j].

输入:words = ["mass","as","hero","superhero"]
输出:["as","hero"]
解释:"as" 是 "mass" 的子字符串,"hero" 是 "superhero" 的子字符串。
["hero","as"] 也是有效的答案。

Método 1: violencia

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

Análisis de complejidad.

  • Complejidad del tiempo: O ( ) O ()
  • Complejidad espacial: O ( ) O ()

B_02 Consultar el arreglo con clave

Le da una serie de consultas para verificar, los elementos en la matriz son enteros positivos entre 1 ym. Procese todos los elementos que se verificarán de acuerdo con las siguientes reglas [i] (de i = 0 a i = queries.length-1):

  • Al principio, organice P = [1,2,3, ..., m].
  • Para la i actual, busque la posición de las colas de elementos de consulta [i] en la disposición P (el subíndice comienza desde 0) y luego muévala desde la posición original a la posición inicial de la disposición P (es decir, el índice es 0 Oficina). Tenga en cuenta que la posición de las consultas [i] en P es el resultado de la consulta de las consultas [i].

Devuelva los resultados de la consulta de la matriz para verificarlos en forma de matriz.

  • 1 <= m <= 10 ^ 3
    1 <= consultas.longitud <= m
    1 <= consultas [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]

Método 1: simulación

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

Análisis de complejidad.

  • Complejidad del tiempo: O ( n ) O (n)
  • Complejidad espacial: O ( n ) O (n)

B_03 analizador de entidad HTML

El "analizador de entidades HTML" es un analizador especial que toma el código HTML como entrada y reemplaza todas estas entidades de caracteres especiales con los propios caracteres.

Estos caracteres especiales y sus entidades de caracteres correspondientes en HTML incluyen:

  • Comillas dobles: la entidad de caracteres es "", y el carácter correspondiente es "".
    Comillas simples: la entidad de caracteres es 'y el carácter correspondiente es'.
    Y símbolo: la entidad de carácter es &, y el carácter correspondiente es &.
    Mayor que signo: la entidad de caracteres es>, y el carácter correspondiente es>.
    Menor que signo: la entidad de caracteres es <, y el carácter correspondiente es <.
    Barra oblicua: la entidad de carácter es ⁄ y el carácter correspondiente es /.
    Ingrese el texto de la cadena por usted, implemente un analizador de entidad HTML y devuelva el resultado del analizador

Método 1: reemplazar la cadena

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

Análisis de complejidad.

  • Complejidad del tiempo: O ( n ) O (n)
  • Complejidad espacial: O ( 1 ) O (1)

A_04 Número de esquemas para colorear el gráfico de cuadrícula N x 3 (sin AC)

Inserte la descripción de la imagen aquí

输入:n = 2
输出:54

输入:n = 3
输出:246

示例 4:
输入:n = 7
输出:106494

示例 5:
输入:n = 5000
输出:30228214

Consejos:

  • n == grid.length
    grid [i] .length == 3
    1 <= n <= 5000

Método uno:


Análisis de complejidad.

  • Complejidad del tiempo: O ( ) O ()
  • Complejidad espacial: O ( ) O ()

Publicado 714 artículos originales · elogiado 199 · 50,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/qq_43539599/article/details/105466164
Recomendado
Clasificación