Wyszukiwanie wzorców
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 85 z 86.
Wyzwanie
ŁatwyWczytaj dwa wiersze danych wejściowych: pierwszy wiersz to tekst, w którym należy szukać, a drugi wiersz to wzorzec do znalezienia.
Policz, ile razy wzorzec występuje w tekście, uwzględniając nakładające się wystąpienia, i wypisz tę liczbę.
Wymagania:
- Wczytaj ciąg tekstowy z pierwszego wiersza danych wejściowych
- Wczytaj ciąg wzorca z drugiego wiersza danych wejściowych
- Przejdź przez tekst i sprawdź, czy wzorzec występuje na każdej pozycji
- Policz wszystkie wystąpienia, w tym nakładające się dopasowania
- Wypisz łączną liczbę jako pojedynczą liczbę całkowitą
Podpowiedź: Aby wyodrębnić podciąg zaczynający się od indeksu i o określonej długości, możesz użyć wycinania ciągu znaków z indeksami. Zamień ciąg na tablicę znaków lub użyj manipulacji indeksami ciągu w Swift, aby sprawdzać, czy wzorzec pasuje na każdej pozycji.
Przykład:
Jeśli dane wejściowe to:
ababa
abaWynik powinien wynosić:
2Wzorzec "aba" występuje na indeksie 0 i indeksie 2 w "ababa".
Spróbuj swoich sił
// Odczytaj dane wejściowe
let text = readLine()!
let pattern = readLine()!
// TODO: Napisz swój kod poniżej
// Policz, ile razy wzorzec występuje w tekście (uwzględniając nakładające się wystąpienia)
// Wyświetl wynik
print(count)Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne2Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift