C++を使用して文字列の部分文字列の数を見つける
この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。
Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and ‘moon’. Input : string = “yellow” Output : 21
解決策を見つけるためのアプローチ
文字列の長さをnとすると、上記の例を見ると、可能なすべての部分文字列を見つけるには、長さn、(n-1)、(n-2)、(n -3)、(n-4)、...... 2、1。
=n *(n + 1)/ 2
これで、部分文字列の数を評価する式ができました。ここで、nは特定の文字列の長さです。
上記のアプローチのC++コード
これが、与えられた問題を解決するための入力として使用できるC++構文です-
例
#include<bits/stdc++.h> using namespace std; int main () { string str = "yellow"; // finding the length of string int n = str.length (); // calculating result from formula int number_of_strings = n * (n + 1) / 2; cout << "Number of substrings of a string : " << number_of_strings; return 0; }
出力
Number of substrings of a string: 21
コードの説明
これは、特定の文字列から可能な部分文字列の数を見つけるための楽観的で直接的なアプローチです。
まず、このコードでは、.length()関数から指定された文字列の長さを見つけ、その値を上記で導出した式に入れて、結果変数に格納された出力を出力します。
結論
この記事では、文字列内の部分文字列の数を見つける方法を説明しました。最初に、可能なすべての部分文字列の数を見つけるための式を導き出し、文字列の長さから式を使用して結果を取得します。同じプログラムを、C、java、python、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。
-
C++を使用して停止ステーションの数を見つける
ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります
-
C++を使用してセットの反射関係の数を見つける
この記事では、集合上の反射関係の数を見つけるためのアプローチについて説明します。この問題では、数nが与えられ、n個の自然数のセットで、反射関係の数を決定する必要があります。 反射関係 −集合Aの関係は、(a、a)が集合Aに属するすべてのaがRに属する場合、反射的と呼ばれます。たとえば、- Input : x = 1 Output : 1 Explanation : set = { 1 }, reflexive relations on A * A : { { 1 } } Input : x = 2 Output : 4 Explanation : set = { 1,2 }, reflex