C++での文字列の逆母音
文字列が与えられると、タスクは与えられた文字列に存在するすべての母音を逆にすることです。たとえば、
入力-1 −
a = “tutor”
出力 −
totur
説明 −文字列「tutor」を逆にすると、「totur」として出力が生成されます。
入力-2 −
a = “mathematics”
出力 −
mithametacs
説明 −文字列「mathematics」を逆にすると、「mithametacs」として出力が生成されます。
この問題を解決するためのアプローチ
文字列が与えられると、その中に存在するすべての母音を逆にする必要があります。この特定の問題を解決するにはいくつかのアプローチがありますが、線形時間O(n)でこれを解決する必要があります。
したがって、この問題を解決するためのより良い方法は、最初に左端の要素と右端の要素を指す2つのポインターをローとハイにする2ポインターアプローチを使用することです。 2つのネストされたループで、左端の文字が母音であり、右端の文字が母音であるかどうかを確認してから、要素を交換して右のポインターを移動します。
-
文字列を入力してください。
-
文字が母音であるかどうかをチェックするブール関数。
-
関数reverseVowel(string&str)は、文字列を入力として受け取り、文字列に存在する母音を反転します。
-
それぞれ「0」と最後の文字を指す2つのポインタをlowとhighに初期化します。
-
左端と右端の文字が母音であるかどうかを確認してから、文字をインプレースで交換し、右端のポインターをデクリメントします。
-
文字列のすべての文字にアクセスしなくなるまで、この手順を繰り返します。
例
#include <bits/stdc++.h> using namespace std; bool isVowel(char ch) { return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U'; } string reverseVowel(string &s){ int low = 0; int high = s.size() - 1; while (low < high) { while (low < high && !isVowel(s[low])) { low ++; } while (low < high && !isVowel(s[high])) { high --; } swap(s[low++], s[high--]); } return s; } int main(){ string a= "tutorialspoint"; string ans= reverseVowel(a); cout<<ans; return 0; }
出力
上記のコードを実行すると、次のように出力が生成されます
titorailspount
指定された文字列「tutorialspoint」には母音が含まれているため、母音を反転すると、「titorailspount」として出力が生成されます。
-
C#で文字列を反転します
文字列を逆にするには、配列を使用します。 Reverse()メソッド。 メソッドを設定し、文字列値を「Henry」として渡しました- public static string ReverseFunc(string str) { char[] ch = str.ToCharArray(); Array.Reverse(ch); return new string(ch); } 上記の方法では、文字列を文字配列に変換しました- char[] ch = str.ToCharArray(); 次に、Reverse()メ
-
Pythonでの文字列の逆母音
小文字の文字列があるとします。私たちの仕事は、文字列に存在する母音を逆にすることです。したがって、文字列が「hello」の場合、母音反転後の文字列は「holle」になります。文字列「プログラミング」の場合は「prigrammong」になります これを解決するには、次の手順に従います- 文字列を取得して母音のリストを作成し、それらのインデックスも保存します 母音リストを逆にする set idx:=0 for i:=0から指定された文字列の長さ– 1 iがインデックスリストにある場合- 母音[i]を最後の文字列に入れます idx:=idx + 1 それ以外の場合は、string