Źródło: https://www.careercup.com/question?id=5152893422272512
Masz słownik, który jest listą wyrazów oraz listę zdań
Napisz dwie funkcje:
1. Przygotuj zdanie tak aby łatwo było je sprawdzić
2. Sprawdź czy zdanie zawiera wszystkie poprawne wyrazy
Bierzemy dowolne dwie tablie np:
var wordList = ["You","have","a","dictionary","which","is","an","array","of","words","and","strings"]
var phraseList = ["You have a dictionary which is an array of words and array of strings.",
"1. Prepare the array of strings to be searched in the dictionary",
"2. Check if the string contains all valid words or not."]
Zamiast iterować się za każdym razem przez listę słów w słowniku przydałaby nam się tablica asocjacyjna. Javascript niestety ich nie posiada ale można do tego typu zadań używać obiektów. Dla wygody będę ją nazywał mapą tak jak to robi Java.
var wordMap = {}
wordList.forEach(
function(word) {
wordMap[word] = true
}
)
powstały obiekt będzie wyglądał tak
{ You: true, have: true, a: true, dictionary: true, which: true…}
Ad 1
Należy wyczyścić zdanie z wszelakich zbędnych znaków jak np. kropki i liczby. To co chcemy żeby zostało to litery i spacje. Posłużymy się tutaj wyrażeniem regularnym, które szuka wszystkiego co nie jest literą albo spacja. Modyfikator "g" pozwala znaleźć wszystkie wystąpienia a nie jak to normalnie bywa tylko pierwsze.
function removeRedundantCharacters(phrase) {
return phrase.replace(/[^A-Za-z ]/g, '').trim()
}
Ad 2
Zdanie będzie trzeba rozdzielić po spacjach a następnie przeiterować się po każdym słowie i sprawdzić czy istnieje w słowniku. Wystarczy ze znajdziemy pierwsze nieprawidłowe słowo i możemy uznać zdanie za nieprawidłowe.
function checkPhraseByDictionary(phrase, dictionary) {
phrase = removeRedundantCharacters(phrase)
wordList = phrase.split(" ")
for(var index in wordList) {
var word = wordList[index]
if(!dictionary[word]) {
return false
}
}
return true
}
Masz słownik, który jest listą wyrazów oraz listę zdań
Napisz dwie funkcje:
1. Przygotuj zdanie tak aby łatwo było je sprawdzić
2. Sprawdź czy zdanie zawiera wszystkie poprawne wyrazy
Bierzemy dowolne dwie tablie np:
var wordList = ["You","have","a","dictionary","which","is","an","array","of","words","and","strings"]
var phraseList = ["You have a dictionary which is an array of words and array of strings.",
"1. Prepare the array of strings to be searched in the dictionary",
"2. Check if the string contains all valid words or not."]
Zamiast iterować się za każdym razem przez listę słów w słowniku przydałaby nam się tablica asocjacyjna. Javascript niestety ich nie posiada ale można do tego typu zadań używać obiektów. Dla wygody będę ją nazywał mapą tak jak to robi Java.
var wordMap = {}
wordList.forEach(
function(word) {
wordMap[word] = true
}
)
powstały obiekt będzie wyglądał tak
{ You: true, have: true, a: true, dictionary: true, which: true…}
Ad 1
Należy wyczyścić zdanie z wszelakich zbędnych znaków jak np. kropki i liczby. To co chcemy żeby zostało to litery i spacje. Posłużymy się tutaj wyrażeniem regularnym, które szuka wszystkiego co nie jest literą albo spacja. Modyfikator "g" pozwala znaleźć wszystkie wystąpienia a nie jak to normalnie bywa tylko pierwsze.
function removeRedundantCharacters(phrase) {
return phrase.replace(/[^A-Za-z ]/g, '').trim()
}
Ad 2
Zdanie będzie trzeba rozdzielić po spacjach a następnie przeiterować się po każdym słowie i sprawdzić czy istnieje w słowniku. Wystarczy ze znajdziemy pierwsze nieprawidłowe słowo i możemy uznać zdanie za nieprawidłowe.
function checkPhraseByDictionary(phrase, dictionary) {
phrase = removeRedundantCharacters(phrase)
wordList = phrase.split(" ")
for(var index in wordList) {
var word = wordList[index]
if(!dictionary[word]) {
return false
}
}
return true
}
Brak komentarzy:
Prześlij komentarz