Exercício – Retornar cadeias de caracteres de métodos

Concluído

Muitas vezes, você pode achar que precisa escrever um método que retorna uma cadeia de caracteres. Por exemplo, talvez você queira recuperar a cadeia de caracteres de um conjunto de dados ou modificá-la de alguma forma. Neste exercício, você obterá experiência trabalhando com cadeias de caracteres em métodos enquanto pratica uma pergunta de entrevista comum.

Criar um método que retorna uma cadeia de caracteres

Vamos supor que você seja candidato em uma entrevista de codificação. O entrevistador solicita que você escreva um método para inverter uma cadeia de caracteres sem usar string.Reverse. Reserve um momento para pensar em como você pode realizar essa tarefa.

Você pode decidiu que pode inverter a cadeia de caracteres iterando a partir do final dela. Você pode usar uma cadeia de caracteres temporária para armazenar cada letra do fim para o começo. Vamos começar!

  1. No Editor do Visual Studio Code, exclua qualquer código existente dos exercícios anteriores.

  2. Digite o seguinte código no editor:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. O método precisa iterar por meio da palavra especificada e atualizar o resultado. Para fazer isso, atualize o método ReverseWord com o seguinte código:

    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    

    Neste bloco de código, você começa a partir do final da palavra usando word.Length - 1. Você subtrai um do comprimento, já que os índices de matriz começam em zero e deseja evitar o acesso a um elemento fora dos limites. Em seguida, adicione a letra no índice atual da cadeia de caracteres result e mova o índice para trás. Você usa i >= 0 uma vez que i é atualizado depois que o código no loop é executado e deseja ter certeza de incluir o índice zero.

Testar seu código

Ao codificar, é importante verificar com frequência seu trabalho. Localizar e corrigir erros no início do processo de codificação permite que você gaste mais tempo criando o código correto em vez de depurar um programa grande. Verificar o trabalho com frequência é uma habilidade que os entrevistadores de codificação também valorizam muito.

  1. Insira uma nova linha de código em branco. Crie um texto de entrada e chame seu método inserindo o seguinte código acima do método ReverseWord:

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. Se necessário, abra o painel Terminal Integrado do Visual Studio Code.

  3. No prompt de comando do Terminal, insira dotnet run. Compare sua saída com o seguinte:

    snake
    ekans
    

    Se o código exibir resultados inesperados, você precisará examinar o código para encontrar o erro e fazer atualizações. Execute o código novamente para ver se você corrigiu o problema. Continue atualizando e executando o código até que ele produza os resultados esperados.

Criar um método para inverter as palavras na frase

Suponha que o entrevistador faça uma pergunta de acompanhamento. Ele quer que você inverta cada palavra em uma determinada frase, mantendo a posição original de cada palavra. Você pode supor que cada palavra está separada por um espaço. Por exemplo, "tipo de retorno de cadeia de caracteres" se tornaria "opit ed onroter ed aiedac ed seretcarac". Reserve um momento para pensar em como você pode executar essa tarefa.

Se você usar o método que escreveu na tarefa anterior, poderá perceber que pode usar o método para inverter cada palavra individualmente na cadeia de caracteres. Você pode criar uma nova frase e adicionar cada palavra conforme ela é invertida. Vamos começar!

  1. Crie uma nova linha de código em branco no final do programa atual. Insira o seguinte código para criar um novo método:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. Em seguida, você pode extrair as palavras individuais da cadeia de caracteres usando string.Split. Atualize o método ReverseSentence com o seguinte:

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

    Agora que você tem acesso a cada palavra individual na frase, poderá usar o método ReverseWord em cada palavra e armazená-las em result.

  3. Atualize o método ReverseSentence com o seguinte:

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

    Observe como você pode chamar o método ReverseWord dentro de um operador de atribuição composta. Nesse código, o valor retornado é capturado de ReverseWord e adicionado em result. Os métodos com valores retornados podem ser usados onde for necessário, desde que o tipo de dados atenda aos requisitos.

    Nesse código, cada palavra invertida é acrescentada ao resultado com um espaço adicional. No entanto, isso deixa um espaço extra no final da frase invertida.

  4. Você pode remover o espaço extra no final usando string.Trim. Atualize o método com o seguinte código:

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

    Reserve um momento para considerar o resultado de retorno desse método. Um método pode usar outros métodos durante sua execução e até mesmo na instrução return, desde que os tipos de dados correspondam.

    Agora você está pronto para chamar seu método.

  5. Atualize o texto input e a instrução Console.WriteLine para o seguinte:

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

Verificar seu trabalho

Nesta tarefa, você executará o aplicativo no Terminal Integrado e verificará se o código está funcionando corretamente. Vamos começar.

  1. Compare o código com o seguinte para garantir que ele esteja correto:

    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. Salve seu trabalho usando Ctrl + S ou usando o menu Arquivo do Visual Studio Code.

  3. Se necessário, abra o painel Terminal Integrado do Visual Studio Code.

    No painel EXPLORER, para abrir um Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.

  4. No prompt de comando do Terminal, insira dotnet run

  5. Verifique se o código produz a seguinte saída:

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

    Se o código exibir resultados diferentes, você precisará examinar o código para encontrar o erro e fazer atualizações. Execute o código novamente para ver se você corrigiu o problema. Continue atualizando e executando o código até que ele produza os resultados esperados.