Exerciții - Returnați șiruri din metode

Finalizat

Este posibil să descoperiți adesea că trebuie să scrieți o metodă care returnează un șir. De exemplu, poate doriți să regăsiți un șir dintr-un set de date sau să modificați un șir într-un fel. În acest exercițiu, veți obține o experiență de lucru cu șiruri în metode în timp ce practicați o întrebare comună de interviu.

Crearea unei metode care returnează un șir

Să presupunem că ești candidat într-un interviu de codificare. Intervievatorul vă solicită să scrieți o metodă pentru a inversa un șir fără a utiliza string.Reverse. Gândiți-vă la modul în care ați putea realiza această activitate.

Este posibil să fi decis că puteți inversa un șir prin iterarea de la sfârșitul șirului. Puteți utiliza un șir temporar pentru a stoca fiecare literă de la sfârșit la început. Să începem!

  1. În Visual Studio Code Editor, ștergeți orice cod existent din exercițiile anterioare.

  2. Introduceți următorul cod în editor:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. Metoda trebuie să itereze prin cuvântul dat și să actualizeze rezultatul. Pentru a face acest lucru, actualizați ReverseWord metoda cu următorul cod:

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

    În acest bloc de cod, începeți de la sfârșitul cuvântului utilizând word.Length - 1. Scădeți una din lungime, deoarece indicii matricei încep la zero și doriți să evitați accesarea unui element în afara limitelor. Apoi adăugați litera la indexul curent la result șir și mutați indexul înapoi. i >= 0 Utilizați deoarece i este actualizat după ce se execută codul în buclă și doriți să includeți indexul zero.

Testați codul

Atunci când codați, este important să verificați frecvent lucrul. Găsirea și corectarea greșelilor mai devreme în procesul de codificare vă permite să petreceți mai mult timp pe baza codului corect, mai degrabă decât să depanați un program mare. Verificarea frecventă a lucrului este o abilitate care codifică și interviurile.

  1. Introduceți o nouă linie de cod necompletată. Apoi creați text de intrare și apelați metoda introducând următorul cod deasupra metodei ReverseWord :

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. Dacă este necesar, deschideți panoul Terminal integrat visual Studio Code.

  3. În linia de comandă Terminal, introduceți run dotnet. Comparați ieșirea cu următoarele:

    snake
    ekans
    

    Dacă codul afișează rezultate neașteptate, va trebui să revizuiți codul pentru a găsi eroarea și a face actualizări. Rulați codul din nou pentru a vedea dacă ați remediat problema. Continuați actualizarea și rularea codului până când codul produce rezultatele așteptate.

Crearea unei metode de a inversa cuvintele dintr-o propoziție

Să presupunem că intervievatorul vă pune o întrebare de urmărire. Ei vor să inverseze fiecare cuvânt într-o propoziție dată, menținând poziția originală a fiecărui cuvânt. Se poate presupune că fiecare cuvânt este separat printr-un spațiu. De exemplu, "tip de returnare șir" ar deveni "gnirts nruter epyt". Gândiți-vă la modul în care puteți efectua această activitate.

Dacă utilizați metoda pe care ați scris-o în activitatea anterioară, este posibil să vă dați seama că puteți utiliza metoda pentru a inversa fiecare cuvânt din șir individual. Puteți să creați o propoziție nouă și să adăugați fiecare cuvânt pe măsură ce este inversat. Să începem!

  1. Creați o linie de cod necompletată nouă la sfârșitul programului curent. Apoi introduceți următorul cod pentru a crea o nouă metodă:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. În continuare, puteți extrage cuvintele individuale din șir utilizând string.Split. Actualizați ReverseSentence metoda la următoarele:

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

    Acum, că aveți acces la fiecare cuvânt individual din propoziție, puteți utiliza metoda dvs. pentru fiecare cuvânt și stocați-le ReverseWord în result.

  3. Actualizați ReverseSentence metoda la următoarele:

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

    Observați cum puteți apela ReverseWord metoda în interiorul unui operator de atribuire compus. În acest cod, valoarea returnată este capturată de la ReverseWord și adăugată la result. Metodele cu valori returnate pot fi utilizate oriunde aveți nevoie de ele, atât timp cât tipul de date îndeplinește cerințele.

    În acest cod, fiecare cuvânt inversat este adăugat la rezultat cu un spațiu adăugat. Totuși, acest lucru lasă un spațiu suplimentar la sfârșitul propoziției inversate.

  4. Puteți elimina spațiul suplimentar de la final utilizând string.Trim. Actualizați metoda la următorul cod:

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

    Luați un moment pentru a lua în considerare rezultatul returnat al acestei metode. O metodă poate utiliza alte metode în timpul execuției și chiar în instrucțiunea de returnare, atât timp cât tipurile de date se potrivesc.

    Acum sunteți gata să vă apelați metoda!

  5. Actualizați input textul și instrucțiunea Console.WriteLine astfel:

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

Verificați-vă activitatea

În această activitate, veți rula aplicația de la Terminalul integrat și veți verifica dacă codul funcționează corect. Să începem.

  1. Comparați codul cu următoarele pentru a vă asigura că este corect:

    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. Salvați lucrul utilizând Ctrl + S sau utilizând meniul Fișier de cod Visual Studio.

  3. Dacă este necesar, deschideți panoul Terminal integrat visual Studio Code.

    În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat.

  4. În linia de comandă Terminal, introduceți run dotnet

  5. Verificați dacă codul dvs. generează următoarea ieșire:

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

    Dacă codul afișează rezultate diferite, va trebui să revizuiți codul pentru a găsi eroarea și a face actualizări. Rulați codul din nou pentru a vedea dacă ați remediat problema. Continuați actualizarea și rularea codului până când codul produce rezultatele așteptate.