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, você pode querer recuperar uma cadeia de caracteres de um conjunto de dados ou modificar uma cadeia de caracteres de alguma forma. Neste exercício, você ganhará alguma experiência trabalhando com cordas em métodos enquanto pratica uma pergunta de entrevista comum.

Criar um método que retorna uma cadeia de caracteres

Suponha que você seja um candidato em uma entrevista de programação. O entrevistador pede-lhe para escrever 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 ter decidido que pode reverter uma cadeia de caracteres iterando a partir do final da cadeia de caracteres. Você pode usar uma cadeia de caracteres temporária para armazenar cada letra de ponta a ponta. Vamos começar!

  1. No Editor de Códigos do Visual Studio, 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 através da palavra dada e atualizar o resultado. Para fazer isso, atualize o ReverseWord método 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 desde que os índices de matriz começam em zero e deseja evitar acessar um elemento fora dos limites. Em seguida, adicione a letra no índice atual à result cadeia de caracteres e mova o índice para trás. Você usa i >= 0 desde i que é atualizado depois que o código no loop é executado, e você quer ter certeza de incluir o índice zeroth.

Teste o seu código

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

  1. Insira uma nova linha de código em branco. Em seguida, crie algum texto de entrada e chame seu método inserindo o seguinte código acima do ReverseWord método:

    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, digite dotnet run. Compare a sua saída com o seguinte:

    snake
    ekans
    

    Se o código apresentar resultados inesperados, terá de rever 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 seu código até que seu código produza os resultados esperados.

Criar um método para reverter palavras em uma frase

Suponha que o entrevistador lhe faça uma pergunta de acompanhamento. Eles querem que você inverta cada palavra em uma determinada frase, mantendo a posição original de cada palavra. Você pode assumir que cada palavra está separada por um espaço. Por exemplo, "string return type" se tornaria "gnirts nruter epyt". Reserve um momento para pensar em como você pode executar essa tarefa.

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

  1. Crie uma nova linha de código em branco no final do programa atual. Em seguida, 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 ReverseSentence método para 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, você pode usar seu ReverseWord método em cada palavra e armazená-las em result.

  3. Atualize o ReverseSentence método para 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 ReverseWord método dentro de um operador de atribuição composta. Neste código, o valor de retorno é capturado ReverseWord e adicionado ao result. Os métodos com valores de retorno podem ser usados em qualquer lugar que você precise deles, desde que o tipo de dados atenda aos requisitos.

    Neste código, cada palavra invertida é acrescentada ao resultado com um espaço adicionado. 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 para 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 deste método. Um método pode usar outros métodos durante toda a sua execução e até mesmo na instrução return, desde que os tipos de dados correspondam.

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

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

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

Verifique o seu trabalho

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

  1. Compare seu código com o seguinte para garantir que 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 de código do Visual Studio.

  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, digite 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 apresentar resultados diferentes, terá de rever 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 seu código até que seu código produza os resultados esperados.