Вправа – зворотні рядки з методів
Часто може виявитися, що потрібно написати метод, який повертає рядок. Наприклад, може знадобитися отримати рядок із набору даних або змінити рядок якимось чином. У цій вправі ви отримаєте певний досвід роботи з рядками в методах, практикуючи загальне запитання інтерв'ю.
Створення методу, який повертає рядок
Припустімо, що ви кандидат в інтерв'ю з кодуванням. Інтерв'юер просить вас написати метод зворотного рядка без використання string.Reverse. Зачекайте, щоб подумати про те, як можна виконати це завдання.
Можливо, ви вирішили скасувати рядок, ітеруючи з кінця рядка. Щоб зберігати кожну букву з кінця на початок, можна використовувати тимчасовий рядок. Почнімо!
У редакторі коду Visual Studio видаліть будь-який наявний код із попередніх вправ.
Введіть у редакторі такий код:
string ReverseWord(string word) { string result = ""; return result; }Метод має ітерувати через задане слово та оновити результат. Для цього оновіть
ReverseWordметод таким кодом:string ReverseWord(string word) { string result = ""; for (int i = word.Length - 1; i >= 0; i--) { result += word[i]; } return result; }У цьому блоці коду ви починаєте з кінця слова за допомогою .
word.Length - 1Ви віднімаєте один від довжини, оскільки індекси масиву починаються з нуля, і вам потрібно уникнути доступу до елемента поза межами. Потім ви додасте до рядка букву з поточним індексомresultі перемістіть індекс назад. Ви використовуєтеi >= 0, оскількиiоновлюється після виконання коду в циклі, і ви неодмінно долучите нульовий індекс.
Перевірка коду
Під час кодування важливо часто перевіряти свою роботу. Пошук і виправлення помилок на початку процесу кодування дає змогу витрачати більше часу на побудову правильного коду, а не на налагодження однієї великої програми. Перевірка вашої роботи часто є навичкою, що кодування інтерв'юерів цінують високо, а також.
Введіть новий пустий код. Потім створіть текст вводу та зателефонуйте до методу, ввівши наведений вище
ReverseWordкод.string input = "snake"; Console.WriteLine(input); Console.WriteLine(ReverseWord(input));За потреби відкрийте інтегровану панель терміналів Коду Visual Studio.
У командному рядку термінала введіть dotnet run. Порівняйте результати з такими результатами:
snake ekansЯкщо код відображає неочікувані результати, потрібно перевірити код, щоб знайти помилку та внести оновлення. Запустіть код ще раз, щоб дізнатися, чи вирішено проблему. Продовжуйте оновлювати та запускати код, доки код не дасть очікуваних результатів.
Створення методу зворотного слова в реченні
Припустімо, ваш інтерв'юер ставить вам наступне запитання. Вони хочуть, щоб кожне слово було скасовано в певному реченні, зберігаючи початкове положення кожного слова. Можна припустити, що кожне слово розділено пробілом. Наприклад, "тип повернення рядка" стане "gnirts nruter epyt". Зачекайте, щоб подумати про те, як можна виконати це завдання.
Якщо ви використовуєте метод, який ви написали в попередньому завданні, ви можете зрозуміти, що за допомогою цього методу можна скасувати кожне слово в рядку окремо. Ви можете створити нове речення та додати кожне слово в зворотному порядку. Почнімо!
Створіть новий пустий рядок коду в кінці поточної програми. Потім введіть такий код, щоб створити новий метод:
string ReverseSentence(string input) { string result = ""; return result; }Потім ви можете видобути окремі слова з рядка за допомогою .
string.SplitОновітьReverseSentenceметод до такого методу:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); return result; }Тепер, коли ви маєте доступ до кожного окремого слова в реченні, ви можете використовувати метод
ReverseWordу кожному слові та зберігати їх уresult.Оновіть
ReverseSentenceметод до такого методу:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result; }Зверніть увагу, як можна викликати
ReverseWordметод усередині складеного оператора призначення. У цьому коді повернуте значення записується зReverseWordі додається доresult. Методи зі значеннями, які повертаються, можна використовувати будь-де, якщо тип даних відповідає вимогам.У цьому коді кожне зворотне слово додається до результату з додатковим пробілом. Однак це залишає додатковий простір у кінці зворотного речення.
Ви можете видалити додатковий простір у кінці за допомогою .
string.TrimОновіть метод до такого коду:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result.Trim(); }Зачекайте, щоб розглянути результат повернення цього методу. Метод може використовувати інші методи протягом виконання та навіть у зворотній інструкції, якщо типи даних збігаються.
Тепер ви готові зателефонувати до свого методу!
Оновіть
inputтекст і інструкціюConsole.WriteLineдо таких параметрів:string input = "there are snakes at the zoo"; Console.WriteLine(input); Console.WriteLine(ReverseSentence(input));
Перевірка роботи
У цьому завданні ви запустите програму з інтегрованого терміналу та переконайтеся, що код працює належним чином. Почнімо.
Порівняйте код із наведеними нижче даними, щоб переконатися, що він правильний.
string input = "there are snakes at the zoo"; Console.WriteLine(input); Console.WriteLine(ReverseSentence(input)); string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result.Trim(); } string ReverseWord(string word) { string result = ""; for (int i = word.Length - 1; i >= 0; i--) { result += word[i]; } return result; }Збережіть свою роботу за допомогою Ctrl + S або за допомогою меню Файл коду Visual Studio.
За потреби відкрийте інтегровану панель терміналів Коду Visual Studio.
На панелі EXPLORER, щоб відкрити термінал у розташуванні папки TestProject, клацніть правою кнопкою миші TestProject , а потім виберіть Відкрити в інтегрованому терміналі.
У командному рядку термінала введіть dotnet run
Переконайтеся, що код дає такий результат:
there are snakes at the zoo ereht era sekans ta eht oozЯкщо в коді відображаються різні результати, потрібно перевірити код, щоб знайти помилку та внести оновлення. Запустіть код ще раз, щоб дізнатися, чи вирішено проблему. Продовжуйте оновлювати та запускати код, доки код не дасть очікуваних результатів.