在java中重新排列一个字符串到另一个字符串

7rtdyuoh  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(519)

我试图找出给定字符串a的一部分是否可以重新排列为给定字符串b(布尔输出)。
因为算法必须最多是o(n),为了简化它,我使用了stringa.retainal(stringb),所以现在我知道stringa和stringb由相同的字符集组成,现在整个任务闻起来像regex。
还有。。读到regex,我现在可能有两个问题(c)。
问题是,通过使用regex或更有效地使用streamapi来发现字符串a的每个字符是否有足够的重复项来覆盖字符串b的每个字符,我是否可能面临获得o(无穷大)的风险?更不用说regex语法是不容易阅读和构建的。
到目前为止,我不能使用排序(任何排序至少是n*log(n))或hashset之类的(因为它消除了两个字符串中的重复项)。
谢谢您。

agyaoht7

agyaoht71#

你可以使用 HashMap<Character,Integer> 计算第一个字符的每个字符出现的次数 String . 这需要线性时间。
然后,每个 Character 第二个 String ,找出是否在 HashMap 并减少计数器(如果它仍然是正的)。这也需要线性时间,如果您设法减少第二个字符的所有字符的计数器 String ,你成功了。

相关问题