c++给定一个字符串 a 和另一个字符串 b,如果字符串 a 可以从字符串 b 中构建(无需按顺序),则输出 true; 否则,输出 false。b 字符串中的每个字母只能在 a 字符串中使用一次。
时间: 2024-12-24 14:18:20 浏览: 19
在 C++ 中,你可以通过使用哈希集合(如 std::unordered_set
或 std::set
)来解决这个问题。这个过程通常被称为“字典树”或“前缀和”问题。下面是一个简单的步骤:
- 创建两个哈希集合,分别代表字符串
a
的字符集(charSetA
)和字符串b
的字符集(charSetB
)。 - 遍历字符串
b
,对于每一个字符,检查它是否在charSetA
中。如果不是,返回false
,因为这意味着a
无法使用b
中的当前字符。 - 如果遍历完
b
且所有字符都在charSetA
中,说明可以构建a
,所以返回true
。
以下是伪代码示例:
bool canConstruct(string a, string b) {
unordered_set<char> charSetA(a.begin(), a.end());
unordered_set<char> charSetB(b.begin(), b.end());
for (char c : b) {
if (!charSetA.count(c)) {
return false;
}
charSetA.erase(c); // 为了防止重复使用,移除已使用的字符
}
return true;
}
阅读全文
相关推荐

















