JavaScript、C++とPythonで文字列を反転するためのベストプラクティス


文字列を反転するプログラマのための最もよく尋ねられる質問の一つです.あなたも、コーディングのインタビュー中にそれを見ることを期待することができます.インタビューでは、組み込みの逆関数を除く文字列を逆にすることができるすべての方法を知っていることを期待することがあります.
文字列を逆にする方法は何十ものあります.どのようなベストプラクティスは、これらの文字列を反転するためですか?今日、私たちはそれらの質問に飛び込んで、3つの人気のプログラミング言語でストリングを逆にする方法を調査します:C++、JavaScriptとPython.
今日、我々はカバーします:
  • What is string reversal?
  • Reverse a string in JavaScript
  • Reverse a string in C++
  • Reverse a string in Python
  • What to learn next
  • どのような文字列の反転ですか?


    プログラミングでは、文字列は文字列です.これは、テキストではなく、数字を表現するために使用する基本的なデータ型の一つです.文字列の反転は、文字の順序を完全に反転することを意味します.言い換えると、我々は文字列を後方に読ませている.

    文字列を反転すると、開発者にはいくつかの用途がありますが、実際のシナリオでは一般的ではありません.時には、正規表現を含む問題は、入力文字列が逆のときに使いやすくなります.他の場合では、文字列の反転は、文字列の終りによって検索しソートすることができます.
    文字列の反転の最も一般的な使用は、コーディングのインタビューです.あなたはインタビュアーを内蔵関数を使用せずに文字列の反転でクイズを期待することができます.
    コーディングの課題では、次のような質問があります.

    Reverse the string.

    You may need to turn the string into an array.

    Your result must be a string.


    どのように、あなたはストリングを逆にしますか?


    どんなプログラミング言語でもストリングを逆にする多くの方法があります.選択する方法は、あなたが書いているプログラムの要件に依存します.いくつかの言語には文字列の反転のための組み込み関数やメソッドがありますが、それらに依存すべきではありません.いくつかのアプローチがあり、そのうちのいくつかは他よりも効果的です.
  • スライス方法
  • ループ法
  • 結合方法
  • 逆解法
  • 新しい文字列の作成
  • その他
  • 我々は詳細にこれらのメソッドのすべてを見て、文字列反転のためのベストプラクティスを探る.始めましょう!

    JavaScriptで文字列を反転する


    JavaScriptの文字列を反転するには3つのステップがあります..split() , .reverse() , .join() . 次の式で覚えておいてください.
    .s.r.j("")
    
    文字列を取りましょう"Hello!" そして、この式を使ってそれを逆にしてください.ここでは、プロセスのビジュアル表現です.

    スプリット


    JavaScriptでsplit() メソッドは文字列を部分文字列の配列に分割し、新しい配列を返します.元の配列を変更しません.
    var word = "Hello!";
    
    var splitWord = word.split("");
    
    スタンドアローン文字の次の配列を作成しました.
    ['H', 'e', 'l', 'l', 'o', '!']
    


    私たちは文字を持っているので、我々はそれらを逆にしたい.私たちはreverse() このメソッドは、配列内で配列を反転します.
    var reverseWord = splitWord.reverse();
    
    上のコードは以下の出力を行います.
    ['!', 'o', 'l', 'l', 'e', 'h']
    
    だから、今私たちの文字は逆ですが、それは文字の単一の文字列ではありません.

    結合


    最後のステップは、それらの文字を再結合して、単一の、逆のストリングを形成することです.私たちはjoin() 配列のすべての要素を1つの文字列に結合するメソッドです.
    joinedWords = reverseWord.join("")
    
    最終的な出力は次のようになります.
    !olleH
    
    すべてのメソッドを1行にまとめることができます.
    var word = "Hello";
    var reverseWord = word.split("").reverse().join("");
    console.log(reverseWord);
    

    If you want to try it out yourself, check out my original publication, which has a built-in code widget.



    C +の文字列を反転する


    C +では、文字列を反転すると、文字の順序を変更することで反転します.C++の文字列を反転するために使用できる複数の実装があります.つのベストアプローチを見てみましょう.

    1ループを使う


    あなたは、中でループを書くことができますmain 文字列を反転する関数の本体.ループ本体では、組み込みを使用する必要がありますswap 関数は、要素の位置を変更します.
    #include <iostream>
    using namespace std;
    
    int main() {
    
      string greeting = "Hello!";
      int len = greeting.length();
      int n=len-1;
      for(int i=0;i<(len/2);i++){
        swap(greeting[i],greeting[n]);
        n = n-1;
    
      }
      cout<<greeting<<endl;
    }
    
    組み込み関数を使用できない場合がありますので、コードを少し変更する必要があります.
    #include <iostream>
    using namespace std;
    
    int main() {
    
      string greeting = "Hello!";
      int len = greeting.length();
      int n=len-1;
      for(int i=0;i<(len/2);i++){
    
        char temp = greeting[i];
        greeting[i] = greeting[n];
        greeting[n] = temp;
        n = n-1;
    
      }
      cout<<greeting<<endl;
    }
    

    組み込み関数の使用


    C +は文字列を反転するための組み込み関数を持っています.あなたがこれを使うのを許されるならば、それは簡単に推薦されます.この関数には二つの入力があります.
  • 文字列の反復子
  • 文字列終端用イテレータ
  • #include <iostream>
    //The library below must be included for the reverse function to work
    #include<bits/stdc++.h> 
    using namespace std;
    
    int main() {
    
      string greeting = "Hello!";
      //Note that it takes the iterators to the start and end of the string as arguments
      reverse(greeting.begin(),greeting.end());
      cout<<greeting<<endl;
    }
    

    学習を続ける。

    Learn data structures and algorithms for coding interviews without scrubbing through videos or documentation. Educative's text-based courses are easy to skim and feature live coding environments, making learning quick and efficient.

    Data Structures for Coding Interviews in Python

    Also available in C++ and JavaScript


    3 .独自の関数をビルドする


    組み込み関数を使用できない場合は、文字列を反転するために独自に書くことができます.この関数は再帰を使います.再帰は、関数が同じ関数内で呼び出されたときです.例を見てください.
    #include <iostream>
    using namespace std;
    
    void reverse_String(string& greet, int n,int i){
    
      if(n<=i){return;}
    
      swap(greet[i],greet[n]);
      reverse_String(greet,n-1,i+1);
    
    }
    
    int main() {
    
      string greeting = "Hello";
      cout<<"String before reversal: "<<greeting<<endl;
      reverse_String(greeting,greeting.length()-1,0);
      cout<<"String after reversal: "<<greeting<<endl;
    
    }
    

    4 .新しい文字列を作成する


    組み込み関数のないC +で文字列を逆にする最後の方法は、新しい文字列を作成することです.私たちは文字列を通して後方にループし、その要素を同じサイズの新しい文字列に格納しますpush_back メソッド.
    #include <iostream>
    using namespace std;
    
    int main() {
    
      string greeting = "Hello!";
    
      string new_greeting;
    
      for(int n = greeting.length()-1; n >= 0; n--){
        new_greeting.push_back(greeting[n]);
      }
      cout<<"Original string: "<< greeting << endl;
      cout<<"New reversed string: "<< new_greeting << endl;
    
    }
    

    If you want to try these out yourself, check out my original publication, which has a built-in code widget.



    Pythonで文字列を反転する


    Pythonでは、文字列は文字列の順序で並びます.C +とは異なり、Pythonで文字列を反転する組み込みメソッドはありません.Pythonで文字列を反転するための最良の方法は次の三つです.

    スライシング方法


    スライスを使用して文字列を反転することができます.The slice() 関数はスライスオブジェクトを返します.スライスオブジェクトは、スライスの開始と終了を指定できる文字列のスライス方法を指定するために使用します.
    文字列の長さから始まるスライスを作成し、インデックス0で終了しなければなりません.
    stringname[stringlength::-1]
    
    または、文字列の長さを指定せずに書くことができます.
    stringname[::-1]
    
    スライスステートメントを使用して、文字列の長さから始まり、位置0で終了し、step - 1で移動します.
    str="Hello!" # initial string
    stringlength=len(str) # calculate length of the list
    slicedString=str[stringlength::-1] # slicing 
    print (slicedString) # print the reversed string
    

    2ループ法


    C +と同様に、ループを使用して文字列を逆にすることができます.Wはウィザーを使用することができますfor or while ループ.開始するには、新しい配列を作成しましょうreversedString[] . リストの長さで初期化された変数インデックスを繰り返してリストをループします.プロセスを見てみましょう.
  • を返します.str[index-1] with reverseString
  • インデックスの減少
  • インデックスが0より小さいまで繰り返し続ける
  • str = "Hello!" # initial string
    reversedString=[]
    index = len(str) # calculate length of string and save in index
    while index > 0: 
        reversedString += str[ index - 1 ] # save the value of str[index-1] in reverseString
        index = index - 1 # decrement index
    print(reversedString) # reversed string
    

    結合方法


    このテクニックはPythonのイテレータプロトコルを利用します.それは逆の反復を使用して文字列を反転しますreversed() 関数は、文字列内の要素を逆順に循環してから使用する.join() それらを永遠の文字列にマージする!
    このメソッドの構文は次のとおりです.
    str="Hello!" 
    reversedstring=''.join(reversed(str))
    
    完全なPythonコードでそれをチェックしてください.
    str = 'Hello!' #initial string
    reversed=''.join(reversed(str)) # .join() method merges all of the characters resulting from the reversed iteration into a new string
    print(reversed) #print the reversed string
    
    出力:!オルレフ

    If you want to try these out yourself, check out my original publication, which has a built-in code widget.


    次に学ぶこと


    おめでとう!JavaScript、C++およびPythonで文字列を反転するための最良のプラクティスを知っています.これらのスキルは、面接のプロセスを支援するバインドされます.データ構造、アルゴリズム、およびその他の一般的なインタビュー問題の練習を続けるようにしてください.
  • 配列から整数を削除する
  • 単独リンクリスト内の検索
  • リストから値を削除する
  • リンクされたリストの最後に新しいオブジェクトを挿入する
  • リンクリスト内のループを検出する
  • その他
  • 教育的なData Structures for Coding Interviews インタビューの準備が決定的な場所です.最も人気のあるプログラミング言語のコースでは、すぐに現実世界の問題解決を介してデータ構造を習得するバインドされています.今日から入手!
    ハッピーラーニング!

    データ構造とインタビュー


  • 7 JavaScript data structures you must know
  • Data Structures 101: implement hash tables in JavaScript
  • Ace the top 15 Java algorithm questions for coding interviews