检查字符串是否可以在C ++中破坏另一个字符串

假设我们有两个字符串s1和s2,它们的大小相同;我们必须检查字符串s1的某些排列是否可以破坏字符串s2的某些排列,反之亦然。如果对于范围为0至n-1的所有i,如果x [i]> = y [i](按字母顺序),则字符串a可以中断字符串b。

因此,如果输入类似于s1 = abc和s2 = xya,则输出为true。这是因为“ ayx”是s2的一个排列,它可以分解为字符串“ abc”,它是s1 =“ abc”的一个排列。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数check(),它将取s1,s2,

  • 对于初始化i:= 0,当i <s1的大小时,更新(将i增加1),执行-

    • 返回假

    • 如果s2 [i] <s1 [i],则-

    • 返回真

    • 从主要方法中,执行以下操作-

    • 排序数组s1

    • 排序数组s2

    • f3:=检查(s2,s1)

    • f4:=检查(s1,s2)

    • 返回true f3为true或f4为true,否则为false

    例 

    让我们看下面的实现以更好地理解-

    #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

    以上是 检查字符串是否可以在C ++中破坏另一个字符串 的全部内容, 来源链接: utcz.com/z/321575.html

    回到顶部