java - 查找整数字符串的排列(使用 + 和 -)是否与数字匹配

标签 java algorithm

基本上我正在做的事情是使用一个整数字符串(例如“1234”),并且我可以在此字符串中的任何位置插入一个 + 或 - ,可以随意插入。例如,我可以做“1 + 2 + 3 + 4”,“12 + 34”,“123 - 4”等。要求使用字符串的所有整数,我不能排除任何一个。

我想做的是获取另一个整数数组,并找出是否可以使用第一段中提到的排列来获得该数字。我有点不知道从哪里开始寻找这个。我可能会创建一个递归循环函数来创建字符串的每个可能组合,并查看每个结果是否匹配,但这似乎非常慢。另一个想法是将它们索引到一个数组中 - 这样我就可以在计算一次之后简单地查找答案。

有人有什么建议吗?

最佳答案

I could possibly create a recursive loop function to create every possible combination of the string and see if each result matches but this seems like it will be terribly slow.

进行详尽的搜索是您唯一的选择。幸运的是,即使对于最多 7..10 个字符的中等长度字符串,时间也不会太糟糕,因为在处理“尾部”时不需要“重做”先前字符串的加法和减法。

可能的实现大纲如下:

  1. 将整数数组中的所有所需结果放入哈希集中
  2. 制作一个递归方法,获取到目前为止的结果、字符串和下一个“剪切”的位置
  3. 当下一个“cut”位于字符串的末尾时,根据步骤 1 中的哈希集检查到目前为止的结果
  4. 否则,在 k 上循环尝试这三种可能性
    • 使用“cut”中的 k 位数字作为正数,并使用移动 k 位的“cut”进行递归调用。这相当于在剪切处插入一个+
    • 使用“cut”中的 k 位数字作为负数,并使用移动 k 位的“cut”进行递归调用。这相当于在剪切处插入一个-

关于java - 查找整数字符串的排列(使用 + 和 -)是否与数字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974938/

相关文章:

java - 如何通过 Java Servlet 在整个域名上设置 cookie?

javascript - 算法:Next Greater Element I(来自 leetcode)

c - 彼得森算法(代码错误)

java - NullPointerException 在 textview 中使用 fragment

java - 查找字符数组中分散的单词并将其拼凑在一起

algorithm - secret 圣诞老人算法

ruby - "Combined"3 个或更多字符串的差异/交集

algorithm - 中轴变换的实际实现?

java - 创建可靠的 JMS 客户端?

java - map 的通用 autovivify 函数