C++代码:给定一个字符串 a 和另一个字符串 b,如果字符串 a 可以从字符串 b 中构建(无需按顺序),则输出 true; 否则,输出 false。b 字符串中的每个字母只能在 a 字符串中使用一次
时间: 2024-12-22 16:28:29 浏览: 16
在C++中,你可以通过哈希集合或者双指针的方法来解决这个问题。首先,我们可以遍历字符串b,对于每一个字符,我们检查它是否存在于字符串a中,并将其添加到一个集合或者数组中以保证其唯一性。然后,我们再遍历字符串a,每次遇到一个字符,如果这个字符不在集合中,那么就直接返回false,表示无法构建。如果遍历完a仍然所有字符都在集合中,那么返回true。
下面是一个简单的示例代码:
```cpp
#include <unordered_set>
#include <string>
bool canBuildString(std::string a, std::string b) {
// 使用哈希集合存储b中的字符及其出现次数
std::unordered_set<char> charSet;
for (char c : b) {
if (charSet.count(c) > 0) {
charSet[c]++;
} else {
charSet.insert(c);
}
}
// 遍历a,检查每个字符是否在charSet中并且频率大于0
for (char c : a) {
if (charSet.find(c) == charSet.end() || charSet[c] == 0) {
return false;
}
charSet[c]--;
}
return true;
}
```
阅读全文