本关任务
给定一个任意字符串 a
和另一个字符串 b
,如果字符串 a
可以从字符串 b
中构建,则写一个函数将返回 true
; 否则,它将返回 false
。b
字符串中的每个字母只能在 a
字符串中使用一次。注意:您可以假设两个字符串仅包含小写字母。
测试说明
输入描述: 两个字符串 a
和 b
。
输出描述: 输出 true
或者 false
。
平台会对你编写的代码进行测试:
测试输入:
"a" "b"
;
"aa" "ab"
;
"aa" "aab"
;
预期输出: false
false
true
#include <iostream>
#include <string>
using namespace std;
bool canConstruct(string a, string b) {
int count[26] = {0}; // 用于记录b中每个字符出现的次数
for (char c : b) { //Java中的for-each循环,它可以用来遍历数组或集合中的元素
count[c - 'a']++;
}
for (char c : a) {
if (--count[c - 'a'] < 0) { // 如果a中某个字符在b中出现的次数比在a中出现的次数多,则无法构建
return false;
}
}
return true;
}
int main() {
string a ;
string b ;
cin>>a>>b;
if (canConstruct(a, b)) {
cout << "true" << endl;
} else {
cout << "false" << endl;
}
return 0;
}
开始你的任务吧,祝你成功!