本文主要是介绍【LeetCode: 2575. 找出字符串的可整除数组 + 模拟】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🚀 算法题 🚀 |
🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯
🚀 算法题 🚀 |
🍔 目录
- 🚩 题目链接
- ⛲ 题目描述
- 🌟 求解思路&实现代码&运行结果
- ⚡ 模拟
- 🥦 求解思路
- 🥦 实现代码
- 🥦 运行结果
- 💬 共勉
🚩 题目链接
- 2575. 找出字符串的可整除数组
⛲ 题目描述
给你一个下标从 0 开始的字符串 word ,长度为 n ,由从 0 到 9 的数字组成。另给你一个正整数 m 。
word 的 可整除数组 div 是一个长度为 n 的整数数组,并满足:
如果 word[0,…,i] 所表示的 数值 能被 m 整除,div[i] = 1
否则,div[i] = 0
返回 word 的可整除数组。
示例 1:
输入:word = “998244353”, m = 3
输出:[1,1,0,0,0,1,1,0,0]
解释:仅有 4 个前缀可以被 3 整除:“9”、“99”、“998244” 和 “9982443” 。
示例 2:
输入:word = “1010”, m = 10
输出:[0,1,0,1]
解释:仅有 2 个前缀可以被 10 整除:“10” 和 “1010” 。
提示:
1 <= n <= 105
word.length == n
word 由数字 0 到 9 组成
1 <= m <= 109
🌟 求解思路&实现代码&运行结果
⚡ 模拟
🥦 求解思路
- 按照题目的意思模拟即可,但是需要注意的是,因为字符串的长度是比较长的,如果取每一个字符串前缀,最后取模,是会出错的。所以,我们在判断每一位加入前缀的时候取模,就可以避免问题。
- 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {public int[] divisibilityArray(String word, int m) {int n = word.length();int[] ans = new int[n];long num = 0;for (int i = 0; i < n; i++) {num = (num * 10 + (word.charAt(i) - '0')) % m;if (num % m == 0)ans[i] = 1;}return ans;}
}
🥦 运行结果
💬 共勉
最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉! |
这篇关于【LeetCode: 2575. 找出字符串的可整除数组 + 模拟】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!