282 給表示式新增運算子

2021-10-10 14:35:03 字數 1230 閱讀 2958

題目描述:

給定乙個僅包含數字 0-9 的字串和乙個目標值,在數字之間新增二元運算子(不是一元)+、- 或 * ,返回所有能夠得到目標值的表示式。

示例 1:

輸入: num = 「123」, target = 6

輸出: [「1+2+3」, 「123」]

示例 2:

輸入: num = 「232」, target = 8

輸出: [「23+2", "2+32」]

示例 3:

輸入: num = 「105」, target = 5

輸出: [「1*0+5」,「10-5」]

示例 4:

輸入: num = 「00」, target = 0

輸出: [「0+0」, 「0-0」, 「0*0」]

示例 5:

輸入: num = 「3456237490」, target = 9191

輸出:

方法1:

主要思路:

(1)使用回溯;

(2)將字串逐漸的分割成各種的不同的長度子串,配以三種符號,生成對應的字串,並在生成的過程中,計算各個情形下的數值,當到達字串的末尾時,且計算的數值和給定的目標值一致時,將生成的當前的字串存入到結果中;

(3)對於每種可能的字串和對應的符號的選擇,需要隨後復原原來的字串;

(4)在新增符號時,考慮到乘號的優先順序較高,當出現乘號時,需要將乘號的值進行對應的更新,故需要儲存上乙個值的大小;

(5)在處理子字串生成的數字時,考慮到數字的有效性,故當數字第一次出現為0後,需要直接返回,後面的以0作為第一位數字的組成都是無效的;

class

solution

return;}

int len=path.

size()

;//原來的字串的長度,便於後面的復原字串

for(

int i=index;isize()

;++i)

else

if(cur_num==0)

}}vector

addoperators

(string num,

int target)

};

282 給表示式新增運算子

給定乙個僅包含數字 0 9 的字串 num 和乙個目標值整數 target 在 num 的數字之間新增 二元 運算子 不是一元 或 返回所有能夠得到目標值的表示式。import j a.util.arraylist import j a.util.list class solution return...

LeetCode282 給表示式新增運算子

對於每個位置的兩個數之間,都有四種選擇 加 減 乘 不填符號 這樣兩個數就連在一起構成乙個更大的數 我們可以構造乙個代數結構,使得不管下乙個位置的數是什麼,這個數後面填什麼符號,我們都能記錄前面已經計算過的字串的值。這個代數結構是a b c。a 是我們前面記錄過的字串表示式的值,b是我們當前搜尋到的...

282給表示式新增運算子(遞迴回溯 困難)

1 題目描述 給定乙個僅包含數字 0 9 的字串和乙個目標值,在數字之間新增二元運算子 不是一元 或 返回所有能夠得到目標值的表示式。2 示例 輸入 num 123 target 6 輸出 1 2 3 1 2 3 3 題解 基本思想 遞迴回溯,暴力遍歷所有的可能性,時間複雜度o 4 n class ...