524. Longest Word in Dictionary through Deleting
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/originalpublic 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/originalpublic 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/originalvar 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/originalclass 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/originalfunc 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.