Exercício – Retornar cadeias de caracteres de métodos
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!
No Editor do Visual Studio Code, exclua qualquer código existente dos exercícios anteriores.
Digite o seguinte código no editor:
string ReverseWord(string word) { string result = ""; return result; }O método precisa iterar por meio da palavra especificada e atualizar o resultado. Para fazer isso, atualize o método
ReverseWordcom 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 caracteresresulte mova o índice para trás. Você usai >= 0uma vez queié 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.
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));Se necessário, abra o painel Terminal Integrado do Visual Studio Code.
No prompt de comando do Terminal, insira dotnet run. Compare sua saída com o seguinte:
snake ekansSe 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!
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; }Em seguida, você pode extrair as palavras individuais da cadeia de caracteres usando
string.Split. Atualize o métodoReverseSentencecom 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
ReverseWordem cada palavra e armazená-las emresult.Atualize o método
ReverseSentencecom 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
ReverseWorddentro de um operador de atribuição composta. Nesse código, o valor retornado é capturado deReverseWorde adicionado emresult. 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.
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.
Atualize o texto
inpute a instruçãoConsole.WriteLinepara 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.
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; }Salve seu trabalho usando Ctrl + S ou usando o menu Arquivo do Visual Studio Code.
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.
No prompt de comando do Terminal, insira dotnet run
Verifique se o código produz a seguinte saída:
there are snakes at the zoo ereht era sekans ta eht oozSe 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.