检查字符串是否可以打断另一个字符串 (C++)
假设我们有两个长度相同的字符串 s1 和 s2;我们必须检查 s1 的某种排列是否可以打断 s2 的某种排列,反之亦然。如果对于所有 i(范围从 0 到 n-1),x[i] >= y[i](按字母顺序),则字符串 a 可以打断字符串 b。
因此,如果输入类似于 s1 = abc 和 s2 = xya,则输出将为 true。这是因为“ayx”是 s2 的一个排列,可以打断 s1 =“abc”的排列“abc”。
为了解决这个问题,我们将遵循以下步骤:
定义一个函数 check(),它将接收 s1、s2。
初始化 i := 0,当 i < s1 的大小,更新 (i 增加 1),执行:
如果 s2[i] < s1[i],则:
返回 false
返回 true
在主方法中,执行以下操作:
对数组 s1 进行排序
对数组 s2 进行排序
f3 := check(s2, s1)
f4 := check(s1, s2)
如果 f3 为 true 或 f4 为 true,则返回 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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP