Ćwiczenie — zwracanie ciągów z metod

Ukończone

Często może się okazać, że trzeba napisać metodę zwracającą ciąg. Na przykład możesz pobrać ciąg z zestawu danych lub zmodyfikować ciąg w jakiś sposób. W tym ćwiczeniu uzyskasz doświadczenie w pracy z ciągami w metodach podczas wykonywania typowego pytania kwalifikacyjnego.

Tworzenie metody zwracającej ciąg

Załóżmy, że jesteś kandydatem w wywiadzie programistycznym. Osoba przeprowadzająca wywiad prosi o napisanie metody w celu odwrócenia ciągu bez użycia metody string.Reverse. Pośmiń chwilę, aby zastanowić się, jak można wykonać to zadanie.

Możesz zdecydować, że możesz odwrócić ciąg, iterując od końca ciągu. Możesz użyć ciągu tymczasowego do przechowywania każdej litery od końca do początku. Zaczynamy!

  1. W edytorze programu Visual Studio Code usuń dowolny istniejący kod z poprzednich ćwiczeń.

  2. Wprowadź następujący kod w edytorze:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. Metoda musi iterować po danym słowie i aktualizować wynik. W tym celu zaktualizuj metodę ReverseWord przy użyciu następującego kodu:

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

    W tym bloku kodu zaczynasz od końca słowa przy użyciu polecenia word.Length - 1. Odejmujesz jeden od długości, ponieważ indeksy tablic zaczynają się od zera i chcesz uniknąć uzyskiwania dostępu do elementu poza granicami. Następnie dodajesz literę w bieżącym indeksie result do ciągu i przenosisz indeks do tyłu. Używasz i >= 0 funkcji , ponieważ i jest aktualizowana po wykonaniu kodu w pętli i chcesz uwzględnić indeks zeroth.

testowanie kodu

Podczas kodowania ważne jest, aby często sprawdzać swoją pracę. Znajdowanie i poprawianie błędów na wczesnym etapie procesu kodowania pozwala poświęcić więcej czasu na tworzenie poprawnego kodu, a nie debugowanie jednego dużego programu. Sprawdzanie pracy często jest umiejętnością, którą również cenią osoby przeprowadzające wywiady.

  1. Wprowadź nowy pusty wiersz kodu. Następnie utwórz tekst wejściowy i wywołaj metodę, wprowadzając następujący kod powyżej ReverseWord metody:

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. W razie potrzeby otwórz panel zintegrowany terminal programu Visual Studio Code.

  3. W wierszu polecenia terminalu wprowadź polecenie dotnet run. Porównaj dane wyjściowe z następującymi danymi:

    snake
    ekans
    

    Jeśli kod wyświetla nieoczekiwane wyniki, musisz przejrzeć kod, aby znaleźć błąd i wprowadzić aktualizacje. Uruchom ponownie kod, aby sprawdzić, czy problem został rozwiązany. Kontynuuj aktualizowanie i uruchamianie kodu, dopóki kod nie generuje oczekiwanych wyników.

Tworzenie metody odwracania wyrazów w zdaniu

Załóżmy, że twój rozmówca zadaje Ci pytanie. Chcą odwrócić każde słowo w danym zdaniu, zachowując oryginalną pozycję każdego słowa. Można założyć, że każde słowo jest oddzielone spacją. Na przykład "ciąg zwracany typ" stanie się "gnirts nruter epyt". Pośmiń chwilę, aby zastanowić się, jak można wykonać to zadanie.

Jeśli używasz metody napisanej w poprzednim zadaniu, możesz zdać sobie sprawę, że możesz użyć metody , aby odwrócić każdy wyraz w ciągu indywidualnie. Możesz utworzyć nowe zdanie i dodać każde słowo, ponieważ jest odwrócone. Zaczynamy!

  1. Utwórz nowy pusty wiersz kodu na końcu bieżącego programu. Następnie wprowadź następujący kod, aby utworzyć nową metodę:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. Następnie możesz wyodrębnić poszczególne wyrazy z ciągu przy użyciu polecenia string.Split. Zaktualizuj metodę ReverseSentence do następującej:

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

    Teraz, gdy masz dostęp do każdego pojedynczego wyrazu w zdaniu, możesz użyć ReverseWord metody w każdym słowie i zapisać je w pliku result.

  3. Zaktualizuj metodę ReverseSentence do następującej:

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

    Zwróć uwagę, jak można wywołać metodę ReverseWord wewnątrz operatora przypisania złożonego. W tym kodzie zwracana wartość jest przechwytywana z ReverseWord elementu i dodawana do elementu result. Metody z wartościami zwracanymi mogą być używane wszędzie tam, gdzie są potrzebne, o ile typ danych spełnia wymagania.

    W tym kodzie każdy odwrócony wyraz jest dołączany do wyniku z dodanym miejscem. Jednak pozostawia to dodatkowe miejsce na końcu odwróconego zdania.

  4. Dodatkowe miejsce na końcu można usunąć przy użyciu polecenia string.Trim. Zaktualizuj metodę do następującego kodu:

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

    Pośmiń chwilę, aby rozważyć wynik zwracany tej metody. Metoda może używać innych metod podczas wykonywania, a nawet w instrukcji return, o ile typy danych są zgodne.

    Teraz możesz wywołać metodę!

  5. Zaktualizuj tekst i instrukcję inputConsole.WriteLine na następujące:

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

Sprawdź swoją pracę

W tym zadaniu uruchomisz aplikację ze zintegrowanego terminalu i sprawdzisz, czy kod działa poprawnie. Zaczynajmy.

  1. Porównaj kod z następującymi elementami, aby upewnić się, że jest on poprawny:

    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. Zapisz swoją pracę przy użyciu Ctrl + S lub za pomocą menu Plik programu Visual Studio Code.

  3. W razie potrzeby otwórz panel zintegrowany terminal programu Visual Studio Code.

    W panelu EKSPLORATOR, aby otworzyć terminal w lokalizacji folderu TestProject, kliknij prawym przyciskiem myszy pozycję TestProject, a następnie wybierz polecenie Otwórz w zintegrowanym terminalu.

  4. W wierszu polecenia terminalu wprowadź polecenie dotnet run

  5. Sprawdź, czy kod generuje następujące dane wyjściowe:

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

    Jeśli kod wyświetla różne wyniki, musisz przejrzeć kod, aby znaleźć błąd i wprowadzić aktualizacje. Uruchom ponownie kod, aby sprawdzić, czy problem został rozwiązany. Kontynuuj aktualizowanie i uruchamianie kodu, dopóki kod nie generuje oczekiwanych wyników.