524. Longest Word in Dictionary through Deleting

LeetCode medium original: C# #array #csharp #graph #leetcode #medium #search #sort #string
El texto de la tarea se traduce del ruso para el idioma seleccionado. El código no cambia.

given cadena s и arreglo строк dictionary. return самую длинную строку из dictionary, которую можно сформировать, удаляя некоторые символы из данной строки s. Если возможных результатов несколько, return самое длинное слово с наименьшим лексикоgrafoическим порядком. Если возможного результата нет, return пустую строку.

Ejemplo:

Input: s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]

Output: "apple"

C# solución

coincidente/original
public class Solution {
    public bool IsSubsequence(string x, string y) {
        int j = 0;
        for (int i = 0; i < y.Length && j < x.Length; i++) {
            if (x[j] == y[i]) {
                j++;
            }
        }
        return j == x.Length;
    }
    public string FindLongestWord(string s, IList<string> d) {
        string maxStr = "";
        foreach (string str in d) {
            if (IsSubsequence(str, s)) {
                if (str.Length > maxStr.Length || (str.Length == maxStr.Length && string.Compare(str, maxStr) < 0)) {
                    maxStr = str;
                }
            }
        }
        return maxStr;
    }
}

C++ solución

borrador automático, revisar antes de enviar
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public bool IsSubsequence(string x, string y) {
        int j = 0;
        for (int i = 0; i < y.size() && j < x.size(); i++) {
            if (x[j] == y[i]) {
                j++;
            }
        }
        return j == x.size();
    }
    public string FindLongestWord(string s, vector<string> d) {
        string maxStr = "";
        foreach (string str in d) {
            if (IsSubsequence(str, s)) {
                if (str.size() > maxStr.size() || (str.size() == maxStr.size() && string.Compare(str, maxStr) < 0)) {
                    maxStr = str;
                }
            }
        }
        return maxStr;
    }
}

Java solución

coincidente/original
public class Solution {
    public boolean isSubsequence(String x, String y) {
        int j = 0;
        for (int i = 0; i < y.length() && j < x.length(); i++)
            if (x.charAt(j) == y.charAt(i))
                j++;
        return j == x.length();
    }
    public String findLongestWord(String s, List < String > d) {
        String max_str = "";
        for (String str: d) {
            if (isSubsequence(str, s)) {
                if (str.length() > max_str.length() || (str.length() == max_str.length() && str.compareTo(max_str) < 0))
                    max_str = str;
            }
        }
        return max_str;
    }
}

JavaScript solución

coincidente/original
var isSubsequence = function(x, y) {
    let j = 0;
    for (let i = 0; i < y.length && j < x.length; i++) {
        if (x[j] === y[i]) {
            j++;
        }
    }
    return j === x.length;
};

var findLongestWord = function(s, d) {
    let maxStr = "";
    for (let str of d) {
        if (isSubsequence(str, s)) {
            if (str.length > maxStr.length || (str.length === maxStr.length && str < maxStr)) {
                maxStr = str;
            }
        }
    }
    return maxStr;
};

Python solución

coincidente/original
class Solution:
    def isSubsequence(self, x: str, y: str) -> bool:
        j = 0
        for i in range(len(y)):
            if j < len(x) and x[j] == y[i]:
                j += 1
        return j == len(x)

    def findLongestWord(self, s: str, d: List[str]) -> str:
        max_str = ""
        for str in d:
            if self.isSubsequence(str, s):
                if len(str) > len(max_str) or (len(str) == len(max_str) and str < max_str):
                    max_str = str
        return max_str

Go solución

coincidente/original
func isSubsequence(x, y string) bool {
    j := 0
    for i := 0; i < len(y) && j < len(x); i++ {
        if x[j] == y[i] {
            j++
        }
    }
    return j == len(x)
}

func findLongestWord(s string, d []string) string {
    maxStr := ""
    for _, str := range d {
        if isSubsequence(str, s) {
            if len(str) > len(maxStr) || (len(str) == len(maxStr) && str < maxStr) {
                maxStr = str
            }
        }
    }
    return maxStr
}

Algorithm

Инициализируйте переменную для хранения самой длинной строки, соответствующей критериям. Пройдите по каждой строке x в неотсортированном arregloе dictionary и проверьте, является ли x subsequenceю строки s.

Если cadena x является subsequenceю, сравните её с текущей самой длинной строкой по длине. Если длина x больше или равна длине текущей самой длинной строки и она меньше текущей строки в лексикоgrafoическом порядке (если равны по длине), обновите текущую самую длинную строку.

После рассмотрения всех строк в dictionary, return найденную строку. Если ни одна cadena не подошла, return пустую строку.

😎

Vacantes para esta tarea

Se muestran vacantes activas con etiquetas coincidentes.

Todas las vacantes
Todavía no hay vacantes activas.