Упражнение. Возврат строк из методов

Завершено

Часто может потребоваться написать метод, возвращающий строку. Например, может потребоваться получить строку из набора данных или изменить строку каким-то образом. В этом упражнении вы получите некоторый опыт работы со строками в методах, практикуя распространенный вопрос интервью.

Создание метода, возвращающего строку

Предположим, вы кандидат в интервью по программированию. Интервьюер просит вас написать метод, чтобы отменить строку без использования string.Reverse. Научитесь думать о том, как вы можете выполнить эту задачу.

Возможно, вы решили, что можно отменить строку, выполнив итерацию из конца строки. Временную строку можно использовать для хранения каждой буквы с конца до начала. Приступим.

  1. В редакторе Visual Studio Code удалите существующий код из предыдущих упражнений.

  2. Введите следующий код в редакторе:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. Метод должен выполнить итерацию по заданному слову и обновить результат. Для этого обновите 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 обновляется после выполнения кода в цикле, и вы хотите обязательно включить отсчитываемый от нуля индекс.

Тестирование кода

При написании кода важно часто проверять работу. Поиск и исправление ошибок в начале процесса написания кода позволяет тратить больше времени на правильный код, а не отладку одной большой программы. Проверка вашей работы часто является навыком, который кодировщики ценят высоко, а также.

  1. Введите новую пустую строку кода. Затем создайте входной текст и вызовите метод, введя следующий код над методом ReverseWord :

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. При необходимости откройте панель интегрированного терминала Visual Studio Code.

  3. В командной строке терминала введите dotnet run. Сравните выходные данные со следующими результатами:

    snake
    ekans
    

    Если код отображает непредвиденные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.

Создание метода для обратного слова в предложении

Предположим, ваш интервьюер задает вам следующий вопрос. Они хотят, чтобы вы изменили каждое слово в заданном предложении, сохраняя исходное положение каждого слова. Вы можете предположить, что каждое слово разделено пробелом. Например, строка возвращаемого типа станет "gnirts nruter epyt". Задумайтесь о том, как вы можете выполнить эту задачу.

Если вы используете метод, написанный в предыдущей задаче, вы можете понять, что метод можно использовать для изменения каждого слова в строке по отдельности. Вы можете создать новое предложение и добавить каждое слово по мере его обратного изменения. Приступим.

  1. Создайте пустую строку кода в конце текущей программы. Затем введите следующий код, чтобы создать новый метод:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. Затем можно извлечь отдельные слова из строки с помощью string.Split. ReverseSentence Обновите метод следующим образом:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        return result;
    }
    

    Теперь, когда у вас есть доступ к каждому отдельному слову в предложении, вы можете использовать ReverseWord метод для каждого слова и хранить их в result.

  3. ReverseSentence Обновите метод следующим образом:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result;
    }
    

    Обратите внимание, что метод можно вызвать ReverseWord внутри оператора составного назначения. В этом коде возвращаемое значение фиксируется ReverseWord и добавляется в result. Методы с возвращаемыми значениями можно использовать в любом месте, если тип данных соответствует требованиям.

    В этом коде каждое обратное слово добавляется к результату с добавленным пробелом. Однако это оставляет дополнительное пространство в конце обратного предложения.

  4. Вы можете удалить дополнительное пространство в конце с помощью string.Trim. Обновите метод до следующего кода:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result.Trim();
    }
    

    Рассмотрим результат возврата этого метода. Метод может использовать другие методы во время выполнения и даже в операторе return, если типы данных соответствуют.

    Теперь вы готовы вызвать метод!

  5. input Обновите текст и инструкцию Console.WriteLine следующим образом:

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    

Проверьте свою работу

В этой задаче вы запустите приложение из интегрированного терминала и убедитесь, что код работает правильно. Итак, приступим.

  1. Сравните код со следующими способами, чтобы убедиться, что это правильно:

    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;
    }
    
  2. Сохраните работу с помощью ctrl + S или с помощью меню "Файл Visual Studio Code".

  3. При необходимости откройте панель интегрированного терминала Visual Studio Code.

    На панели обозревателя откройте терминал в папке TestProject, щелкните правой кнопкой мыши TestProject и выберите "Открыть в интегрированном терминале".

  4. В командной строке терминала введите dotnet run

  5. Убедитесь, что код создает следующие выходные данные:

    there are snakes at the zoo
    ereht era sekans ta eht ooz 
    

    Если код отображает различные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.