C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での文字のシフト


小文字の文字列Sがあり、整数配列がシフトするとします。文字のシフトは、アルファベットの次の文字を意味します。zの場合、それはaになります。ここで、shifts [i] =xごとに、Sの最初のi+1文字をx回シフトします。このようなSへのシフトがすべて適用された後、最終的な文字列を見つける必要があります。したがって、文字列が「abc」でshifts =[3,5,9]の場合、Sの最初の1文字を3シフトすると、「dbc」になり、Sの最初の2文字を5シフトすると、「igc」になります。 」、Sの最初の3文字を9シフトすると、「rpl」が得られます。これが答えです。

これを解決するには、次の手順に従います-

  • シフト配列の範囲サイズのiの場合–2から0まで
    • shift [i]:=shift [i] + shift [i + 1]
    • shift [i]:=shift [i] mod 26
  • 0からS–1のサイズの範囲のiの場合
    • S [i]:=((S [i] – aのASCII)+ shifts [i] mod 26)+aのASCII
  • Sを返す

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   string shiftingLetters(string S, vector<int>& shifts) {
      for(int i = shifts.size() - 2 ;i >=0; i--){
         shifts[i] += shifts[i + 1];
         shifts[i] %= 26;
      }
      for(int i = 0; i < S.size(); i++) {
         S[i] = ( ((S[i] - 'a') + shifts[i]) % 26 + 'a');
      }
      return S;
   }
};
main(){
   vector<int> v = {3,5,9};
   Solution ob;
   cout << (ob.shiftingLetters("abc", v));
}

入力

"abc"
[3,5,9]

出力

rpl

  1. C++の識別子

    C ++識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義アイテムを識別するために使用される名前です。識別子は、文字AからZまたはaからzまたはアンダースコア(_)で始まり、その後に0個以上の文字、アンダースコア、および数字(0から9)が続きます。 C ++では、識別子内に@、$、%などの句読文字を使用できません。 C ++は、大文字と小文字を区別するプログラミング言語です。したがって、Manpowerとmanpowerは、C++では2つの異なる識別子です。 受け入れ可能な識別子の例を次に示します- mohd Piyush abc move_na

  2. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ