給表示式新增運算子

2021-10-24 06:53:25 字數 981 閱讀 8750

題目:力扣

解題思路:回溯法,

想了好久總算想明白了,太不容易了。。

class solution 

//params : start:開始選取數字的位置 ,expr_len:當前表示式的長度,curvalue:當前表示式的算術值

//prevalue:前面的選取的數字的數值(帶符號的數字,*要注意prevalue是前面兩個數的乘積,例如當前表示式為1+2,則prevalue為2,curvalue為3,1-2的話,prevalue=-2,curvalue = -1,1*2的話,prevalue = 1*2=2,curvalue = 1*2 = 2)

public void backtrack(int start, int expr_len, long curvalue, long prevalue)

return;

}long n = 0;

int index = start;

int sign_pos = expr_len;

if(start != 0)

while(index < num_len)

expr[expr_len] = num.charat(index);

expr_len++;

index++;

if(start == 0)

expr[sign_pos] = '+';

backtrack(index, expr_len, curvalue + n, n);

expr[sign_pos] = '-';

backtrack(index, expr_len, curvalue - n, -n);

expr[sign_pos] = '*';

backtrack(index, expr_len, curvalue - prevalue + prevalue*n, prevalue*n);}}

}

282 給表示式新增運算子

題目描述 給定乙個僅包含數字 0 9 的字串和乙個目標值,在數字之間新增二元運算子 不是一元 或 返回所有能夠得到目標值的表示式。示例 1 輸入 num 123 target 6 輸出 1 2 3 123 示例 2 輸入 num 232 target 8 輸出 23 2 2 32 示例 3 輸入 n...

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是我們當前搜尋到的...