检查字符串是否可以在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