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

文字列がC++で別の文字列を壊す可能性があるかどうかを確認する


サイズが同じ2つの文字列s1とs2があるとします。文字列s1の順列が文字列s2の順列を壊すことができるかどうか、またはその逆かどうかを確認する必要があります。 0からn-1の範囲のすべてのiに対してx[i]>=y [i](アルファベット順)の場合、文字列aは文字列bを壊す可能性があります。

したがって、入力がs1=abcおよびs2=xyaのような場合、出力はtrueになります。これは、「ayx」がs2の順列であり、s1="abc"の順列である文字列「abc」に分割される可能性があるためです。

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

  • 関数check()を定義します。これにはs1、s2、

    が必要です。
  • 初期化i:=0の場合、i

    • s2 [i]

      • falseを返す

  • trueを返す

  • メインの方法から、次のようにします-

  • 配列s1を並べ替える

  • 配列s2を並べ替える

  • f3:=check(s2、s1)

  • f4:=check(s1、s2)

  • f3がtrueまたはf4がtrueのいずれか、それ以外の場合はfalseをtrueに返します

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool check(string& s1, string& s2){
      for (int i = 0; i < s1.size(); i++) {
         if (s2[i] < s1[i])
            return false;
      }
      return true;
   }
   bool checkIfCanBreak(string s1, string s2) {
      sort(s1.begin(), s1.end());
      sort(s2.begin(), s2.end());
      bool f3 = check(s2, s1);
      bool f4 = check(s1, s2);
      return f3 || f4;
   }
};
main(){
   Solution ob;
   cout << (ob.checkIfCanBreak("abc", "xya"));
}

入力

"abc", "xya"

出力

1

  1. 文字列にSwiftの別の文字列が含まれているかどうかを確認します

    文字列に別の文字列がswiftで含まれているかどうかを確認するには、2つの異なる文字列が必要です。別の文字列で構成されているかどうかを確認する必要がある1つの文字列。 チェックしたい文字列が「point」で、文字列全体が「TutorialsPoint」で、別の文字列が「onetwothree」であるとします。遊び場でこれら両方の文字列を確認しましょう。 これは、以下に示す2つの方法で実行できます。 3つの異なる文字列を作成することから始めましょう。 var CompleteStr1 = "Tutorials point" var completeStr2 = "

  2. 二分木がC++の別の二分木のサブツリーであるかどうかを確認します

    2つの二分木があるとします。小さい方のツリーが別の二分木のサブツリーであるかどうかを確認する必要があります。これらの2本の木が与えられていると考えてください。 2本の木があります。 2番目のツリーは、最初のツリーのサブツリーです。このプロパティを確認するために、ポストオーダー方式でツリーをトラバースします。このノードをルートとするサブツリーが2番目のツリーと同一である場合、それはサブツリーです。 例 #include <bits/stdc++.h> using namespace std; class node {    public:   &