【LeetCode】找到一个数字的 K 美丽值 Java 题解
题目描述
一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目:
子字符串长度为 k 。子字符串能整除 num 。给你整数 num 和 k ,请你返回 num 的 k 美丽值。
注意:
允许有 前缀 0 。0 不能整除任何值。一个 子字符串 是一个字符串里的连续一段字符序列。
复制代码
思路分析
今天的算法题目是数组题目,题目自定义了一种算法,需要我们找出满足算法条件的组合数。
自定义算法的条件有 1. 子字符串 是一个字符串里的连续一段字符序列。2. 子字符串长度为 k 。能整除 num。根据这两个条件,我们开始实现逻辑编码。由于输入的 num, 求子字符串的时候比较繁琐,因此,可以把 num 转换成字符串。然后实用 substring 函数来切割字符串。需要注意的是 public String substring(int beginIndex, int endIndex) {} ,这里的返回值是包含 beginIndex,不包含 endIndex 的。举个更加直观的例子,"smiles".substring(1, 5) returns "mile"。实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/6c8f7a0c0b94dd4f2826c07d5】。文章转载请联系作者。
评论