小编gz.*_*gz.的帖子

用特定目标组成有效表达式的高效算法

问题表述为:给定一个仅包含数字0-9和目标值的字符串,返回通过在数字之间添加一些二元运算符(+, - 或*)创建的所有表达式,以便它们计算为目标值.在某些情况下,可能没有任何二进制运算符会创建有效的表达式,在这种情况下,该函数应返回一个空数组.新表达式中的数字不应包含前导零.

该函数应返回所有评估为目标的有效表达式,按字典顺序排序.

例如:

digits = "123"和target = 6,应该返回: ["1*2*3", "1+2+3"]

我目前的算法如下.它有点慢,所以我正在寻找一种更有效的方法来解决问题.我目前的算法产生操作数和运算符的所有组合.对于上面的例子,它产生了

操作数:

[['1', '2', '3'], ['1', '23'], ['12', '3'], ['123']]
Run Code Online (Sandbox Code Playgroud)

运营商:

{0: [()], 1: [('+',), ('-',), ('*',)], 2: [('+', '+'), ('+', '-'), ('+', '*'), ('-', '+'), ('-', '-'), ('-', '*'), ('*', '+'), ('*', '-'), ('*', '*')]}
Run Code Online (Sandbox Code Playgroud)

然后它结合了操作数和运算符的所有可能组合并评估每个.

数字有一个约束,2 ? digits.length ? 10. 所以它并没有那么糟糕,但是这个算法对于一个长度为10的数字需要大约4.3秒,其中它应该只需要4秒(最大值).

我还尝试使用以下替代方法加速eval()函数:

if eval(temp) == target:
Run Code Online (Sandbox Code Playgroud)

要么

exp_as_func = eval('lambda: ' + temp)
if exp_as_func() == target:
Run Code Online (Sandbox Code Playgroud)

要么

compiled = compile(temp, '<string>', 'eval') …
Run Code Online (Sandbox Code Playgroud)

python algorithm combinations

8
推荐指数
1
解决办法
513
查看次数

Xpath获取元素值

我正在尝试使用 xpathOdometer从我的 xml 文件中获取 的值:

<?xml version="1.0"  encoding="UTF-8"?>
<CWEAI xmlns="http://www.carrierweb.com/Schema/CWEAI_schema_1.0/cwReturnTruckCanbusHistory">

  <cwReturnTruckCanbusHistory>
    <ID>549094411</ID>
    <CWVehicleID>109755</CWVehicleID>
    <Odometer>1374031</Odometer>
    <Fuel>452800</Fuel>
    <FuelLevel>1000</FuelLevel>

  </cwReturnTruckCanbusHistory>
</CWEAI>
Run Code Online (Sandbox Code Playgroud)

我已经尝试过任何事情,但我无法获得有效的 xpath:

CWEAI/cwReturnTruckCanbusHistory/Odometer

CWEAI/cwReturnTruckCanbusHistory/Odometer/text

CWEAI[@xmlns="http://www.carrierweb.com/Schema/CWEAI_schema_1.0/cwReturnTruckCanbusHistory"]/cwReturnTruckCanbusHistory/Odometer
Run Code Online (Sandbox Code Playgroud)

xml xpath

3
推荐指数
1
解决办法
3万
查看次数

标签 统计

algorithm ×1

combinations ×1

python ×1

xml ×1

xpath ×1