|
| 1 | +// Задание 1: |
| 2 | +// Напишите функцию createUrlSlug(title), которая принимает строку (например, заголовок статьи) и возвращает "URL-дружелюбную" версию этой строки. |
| 3 | +// Требования: |
| 4 | +// 1. Все буквы должны быть в нижнем регистре. |
| 5 | +// 2. Пробелы должны быть заменены на дефисы (-). |
| 6 | +// Пример: |
| 7 | +// createUrlSlug("Hello World, this is a great article") |
| 8 | +// Должно вернуть: "hello-world,-this-is-a-great-article" |
| 9 | + |
| 10 | +function createUrlSlug(title) { |
| 11 | + return title.toLowerCase().split(' ').join('-'); |
| 12 | +} |
| 13 | + |
| 14 | +console.log(createUrlSlug('Hello World, this is a great article')); // "hello-world,-this-is-a-great-article" |
| 15 | + |
| 16 | +// Задание 2: |
| 17 | +// Напишите функцию reverseWords(sentence), которая принимает предложение и переворачивает каждое слово в нем, но сохраняет исходный порядок слов. |
| 18 | +// Требования: |
| 19 | +// 1. Разделить предложение на слова. |
| 20 | +// 2. Каждое слово перевернуть задом наперед. |
| 21 | +// 3. Собрать перевернутые слова обратно в предложение с сохранением пробелов. |
| 22 | +// Пример: |
| 23 | +// reverseWords("Welcome to the jungle") |
| 24 | +// Должно вернуть: "emocleW ot eht elgnuj" |
| 25 | + |
| 26 | +function reverseWords(sentence) { |
| 27 | + const sentenceArr = sentence.split(' '); // [ 'Welcome', 'to', 'the', 'jungle' ] |
| 28 | + const reverseSentenceArr = []; |
| 29 | + |
| 30 | + for (const world of sentenceArr) { |
| 31 | + reverseSentenceArr.push(world.split('').reverse().join('')); // [ 'emocleW', 'ot', 'eht', 'elgnuj' ] |
| 32 | + } |
| 33 | + |
| 34 | + return reverseSentenceArr.join(' '); |
| 35 | +} |
| 36 | + |
| 37 | +console.log(reverseWords('Welcome to the jungle')); // "emocleW ot eht elgnuj" |
| 38 | + |
| 39 | +// ?? альтернативное решение |
| 40 | +function reverseWords(sentence) { |
| 41 | + return sentence |
| 42 | + .split(' ') |
| 43 | + .map((word) => word.split('').reverse().join('')) |
| 44 | + .join(' '); |
| 45 | +} |
| 46 | + |
| 47 | +// Задание 3: |
| 48 | +// Напишите функцию isPalindrome(str), которая проверяет, является ли переданная строка палиндромом. |
| 49 | +// Требования: |
| 50 | +// 1. Функция должна возвращать true или false. |
| 51 | +// 2. Палиндром — это слово или фраза, которая читается одинаково в обоих направлениях (например, "топот"). |
| 52 | +// 3. Проверка должна быть нечувствительна к регистру букв и пробелам. |
| 53 | +// Пример: |
| 54 | +// isPalindrome("А роза упала на лапу Азора") → true |
| 55 | +// isPalindrome("Racecar") → true |
| 56 | +// isPalindrome("Hello world") → false |
| 57 | + |
| 58 | +function isPalindrome(str) { |
| 59 | + const lowerStr = str.toLowerCase(); |
| 60 | + const defaultStr = lowerStr.split(' ').join(''); |
| 61 | + let reverseStr; |
| 62 | + const reverseStrArr = lowerStr.split(' ').reverse(); |
| 63 | + const newReverseStrArr = []; |
| 64 | + |
| 65 | + for (const world of reverseStrArr) { |
| 66 | + newReverseStrArr.push(world.split('').reverse().join('')); |
| 67 | + } |
| 68 | + |
| 69 | + reverseStr = newReverseStrArr.join(''); |
| 70 | + |
| 71 | + return defaultStr === reverseStr; |
| 72 | +} |
| 73 | + |
| 74 | +console.log(isPalindrome('А роза упала на лапу Азора')); // true |
| 75 | +console.log(isPalindrome('Racecar')); // true |
| 76 | +console.log(isPalindrome('Hello world')); // false |
| 77 | + |
| 78 | +// ?? альтернативное решение |
| 79 | +function isPalindrome(str) { |
| 80 | + // 1. Очищаем строку от пробелов и приводим к нижнему регистру |
| 81 | + const cleanStr = str.toLowerCase().split(' ').join(''); |
| 82 | + |
| 83 | + // 2. Создаем перевернутую копию очищенной строки |
| 84 | + const reversedStr = cleanStr.split('').reverse().join(''); |
| 85 | + |
| 86 | + // 3. Сравниваем их |
| 87 | + return cleanStr === reversedStr; |
| 88 | +} |
0 commit comments