Що таке Skeleton Screen? Реальний приклад у Flutter

pic

Вступ

Маніпуляція рядками — це важлива навичка для розробників, і однією з поширених задач є підрахунок кількості рядків у масиві, які починаються з певного префікса. Це завдання полягає в перевірці кожного слова в масиві, щоб визначити, чи починається воно з заданого рядка або префікса. У цьому посібнику ми розглянемо рішення цієї задачі і покроково пройдемо через реалізацію коду.

Постановка задачі

Нам дано масив рядків words та рядок pref. Завдання — повернути кількість рядків у масиві words, які мають префікс pref.

Приклад ситуацій

Приклад 1:

Вхід:

words = ["pay", "attention", "practice", "attend"]  
pref = "at"

Вихід: 2

Пояснення: Два рядки, які починаються з "at" — це "attention" і "attend".

Приклад 2:

Вхід:

words = ["leetcode", "win", "loops", "success"]  
pref = "code"

Вихід: 0

Пояснення: Жоден рядок не починається з "code".

Обмеження

  • 1 ≤ words.length ≤ 100
  • 1 ≤ words[i].length, pref.length ≤ 100
  • words[i] і pref складаються з малих літер англійського алфавіту.

Огляд рішення

Щоб вирішити це завдання, нам потрібно пройти через кожне слово в масиві words і перевірити, чи починається воно з заданого префікса pref. Для цього ми можемо використати вбудовані методи маніпуляції рядками в Ruby.

Рішення включає наступні кроки:

  1. Проходимо через кожне слово в масиві words.
  2. Перевіряємо, чи починається слово з префікса pref.
  3. Підраховуємо, скільки слів відповідають умові.

Реалізація на Ruby

Крок 1: Оголошення допоміжної функції Ми створимо допоміжну функцію prefix_count, яка приймає масив слів і префікс та повертає кількість слів, що починаються з цього префікса.

def prefix_count(words, pref)  
 count = 0  
 words.each do |word|  
 count += 1 if word[0...pref.length] == pref  
 end  
 count  
end

Крок 2: Пояснення коду

  1. Перебір слів:
  • Метод each використовується для проходження через кожне слово в масиві words.

2. Перевірка префікса:

  • word[0...pref.length] == pref перевіряє, чи підрядок, починаючи з першого символу і до довжини префікса, збігається з рядком pref.

3. Підрахунок збігів:

  • Якщо підрядок збігається з префіксом, лічильник збільшується на 1.

4. Повернення лічильника:

  • Після завершення циклу повертається загальна кількість слів, що починаються з префікса.

Пояснення на прикладі

Приклад 1: Вхід:

words = ["pay", "attention", "practice", "attend"]  
pref = "at"

Кроки:

  1. Перебираємо масив слів.
  • "pay": Не починається з "at".
  • "attention": Починається з "at", тому збільшуємо лічильник (count = 1).
  • "practice": Не починається з "at".
  • "attend": Починається з "at", тому збільшуємо лічильник (count = 2).
  1. Вихід: 2.

Приклад 2: Вхід:

words = ["leetcode", "win", "loops", "success"]  
pref = "code"

Кроки:

  1. Перебираємо масив слів.
  • "leetcode": Не починається з "code".
  • "win": Не починається з "code".
  • "loops": Не починається з "code".
  • "success": Не починається з "code".
  1. Вихід: 0.

Ефективність

  • Часова складність: Часова складність цього рішення становить O(n * m), де n — кількість слів у масиві, а m — довжина префікса.

  • Просторова складність: O(1), оскільки не використовуються додаткові простори, окрім вхідних і вихідних даних.

Тестування рішення

Приклад 1:

words = ["pay", "attention", "practice", "attend"]  
pref = "at"  
puts prefix_count(words, pref) # Вихід: 2

Приклад 2:

words = ["leetcode", "win", "loops", "success"]  
pref = "code"  
puts prefix_count(words, pref) # Вихід: 0

Висновок

Це рішення пропонує простий і ефективний спосіб підрахунку кількості слів, що починаються з заданого префікса в масиві. Використовуючи вбудовані методи Ruby для маніпуляції рядками, ми можемо швидко знаходити збіги. Ця задача є чудовим вправою для практики основ маніпуляцій з рядками та ітерації.

Успіхів у програмуванні! 🚀

Перекладено з: What is a Skeleton Screen? A real-life Flutter example

Leave a Reply

Your email address will not be published. Required fields are marked *