zoukankan      html  css  js  c++  java
  • [Swift]LeetCode282. 给表达式添加运算符 | Expression Add Operators

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10241192.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Given a string that contains only digits 0-9 and a target value, return all possibilities to add binary operators (not unary) +-, or *between the digits so they evaluate to the target value.

    Example 1:

    Input: num = "123", target = 6
    Output: ["1+2+3", "1*2*3"] 
    

    Example 2:

    Input: num = "232", target = 8
    Output: ["2*3+2", "2+3*2"]

    Example 3:

    Input: num = "105", target = 5
    Output: ["1*0+5","10-5"]

    Example 4:

    Input: num = "00", target = 0
    Output: ["0+0", "0-0", "0*0"]
    

    Example 5:

    Input: num = "3456237490", target = 9191
    Output: []

    给定一个仅包含数字 0-9 的字符串和一个目标值,在数字之间添加二元运算符(不是一元)+- 或 * ,返回所有能够得到目标值的表达式。

    示例 1:

    输入: num = "123", target = 6
    输出: ["1+2+3", "1*2*3"] 
    

    示例 2:

    输入: num = "232", target = 8
    输出: ["2*3+2", "2+3*2"]

    示例 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
    输出: []

    1416ms
     1 class Solution {
     2     func addOperators(_ num: String, _ target: Int) -> [String] {
     3         let numArr = Array(num)
     4         var res = [String]()
     5         
     6         opeHelp(numArr, 0, 0, 0, "", &res, target)
     7         
     8         return res
     9     }
    10     
    11     func opeHelp(_ numArr : [Character],_ total : Int,_ last : Int , _ index : Int,_ str : String, _ res : inout [String], _ target : Int) {
    12         if index == numArr.count {
    13             if total == target {
    14                 res.append(str)
    15             }
    16             return
    17         }
    18         
    19         for i in index+1...numArr.count {
    20             let tmp = String(numArr[index..<i])
    21             let count = tmp.count
    22             if count > 1 && numArr[index] == "0" {
    23                 continue
    24             }
    25             
    26             let n = Int(tmp)!
    27             
    28             if index == 0 {
    29                 opeHelp(numArr, total + n, n,i, str + tmp, &res, target)
    30                 continue
    31             }
    32             
    33             opeHelp(numArr, total + n, n,i, str + "+" + tmp, &res, target)
    34             opeHelp(numArr, total - n, -n,i, str + "-" + tmp, &res, target)
    35             opeHelp(numArr, (total - last) + last * n, last * n, i,str + "*" + tmp, &res, target)
    36         }
    37         
    38     }
    39 }
  • 相关阅读:
    剑指 Offer II 005. 单词长度的最大乘积
    中文编程的瓶颈
    Unity TextMeshPro 富文本格式介绍
    centos使用httpd搭建文件下载服务器教程
    开博第一天
    macOS安装brew(Homebrew国内源)
    git命令将代码导出为单个文件
    CPU虚拟化
    指令
    华为公有云服务的主要服务产品
  • 原文地址:https://www.cnblogs.com/strengthen/p/10241192.html
Copyright © 2011-2022 走看看