6196. 将字符串分割成值不超过 K 的子字符串

165 阅读1分钟

题目:
给你一个字符串 s ,它每一位都是 1 到 9 之间的数字组成,同时给你一个整数 k 。

如果一个字符串 s 的分割满足以下条件,我们称它是一个  分割:

  • s 中每个数位 恰好 属于一个子字符串。
  • 每个子字符串的值都小于等于 k 。

请你返回 s 所有的  分割中,子字符串的 最少 数目。如果不存在 s 的  分割,返回 -1 。

注意:

  • 一个字符串的  是这个字符串对应的整数。比方说,"123" 的值为 123 ,"1" 的值是 1 。
  • 子字符串 是字符串中一段连续的字符序列。

算法:
方法一:贪心

func minimumPartition(s string, k int) int {
    cnt := 0
    num := 0
    for i := range s {
        
        cur := int(s[i] - '0')
        if cur > k {
            return - 1
        }
        num = num * 10 + cur
        if num > k  {
            num = cur
        }
        if num < 10 {
            cnt ++
        }
    }
    return cnt
}