Algorithm 计算给定字符集是否覆盖给定单词集的算法
我遇到了以下算法问题(src:) 问题: c='a'Algorithm 计算给定字符集是否覆盖给定单词集的算法,algorithm,bitmap,Algorithm,Bitmap,我遇到了以下算法问题(src:) 问题: c='a' w=“苹果” c覆盖w,如果w包含c. c_集={'a','b','c','g'} w_set={'apple','ibm','cisco','google'} c_集覆盖w_集,当w_集中的每个w都被c_集中的一些c覆盖时。 给定c_集和w_集,w_集是否被c_集覆盖? 跟进:如果w_集是固定的,比如说一本书,如何确定c_集是否覆盖了这个w_集 一种可能的解决方案是: 如果我们使用26位(每个字符1位)来表示w_集中的每个单词, 然后还为c
w=“苹果”
c覆盖w,如果w包含c.
c_集={'a','b','c','g'}
w_set={'apple','ibm','cisco','google'}
c_集覆盖w_集,当w_集中的每个w都被c_集中的一些c覆盖时。
给定c_集和w_集,w_集是否被c_集覆盖?
跟进:如果w_集是固定的,比如说一本书,如何确定c_集是否覆盖了这个w_集 一种可能的解决方案是:
如果我们使用26位(每个字符1位)来表示w_集中的每个单词,
然后还为c_集形成类似的位掩码,这是一种检查覆盖率的解决方案
将执行“c_集_位掩码和word_i_位掩码”。如果每个
单词,那么我们已经涵盖了每个单词 我的问题是,考虑到
w_集是静态的,例如一本书 一种可能的解决方案是O(nlogk)~O(n),其中n=w_集中的“字母”总数,k=c_集中的字母数。最大值(k)=26。因此我们可以假设k是常数 这个算法看起来很幼稚,但我看不到比O(n)更好的解决方案,因为在任何算法中,您至少需要扫描w_集中的所有字母,以检查它们是否存在于c_集中 按字典顺序对c_集排序。(O(klogk))~常数
扫描w中的每个单词,并对c_集中的字母执行二进制搜索。(O(nlogk))~O(n)。w_集是固定的还是静态的是什么意思?这意味着既然它不会改变,我们可以做一些预处理。