3908. 有效数字
题目描述
给你一个整数 n 和一个数字 x。
如果一个数字满足以下条件,则认为它是 有效 的:
- 它包含 至少一个 数字
x,并且 - 它 不以 数字
x开头。
如果 n 是 有效 的,请返回 true,否则返回 false。
示例 1:
输入: n = 101, x = 0
输出: true
解释:
该数字在下标 1 处包含数字 0。它不以 0 开头,因此满足两个条件。所以,答案是 true。
示例 2:
输入: n = 232, x = 2
输出: false
解释:
该数字以 2 开头,违反了条件。所以,答案是 false。
示例 3:
输入: n = 5, x = 1
输出: false
解释:
该数字不包含数字 1。所以,答案是 false。
提示:
0 <= n <= 1050 <= x <= 9
解法
方法一:模拟
我们用一个布尔变量 \(\textit{hasX}\) 来记录数字 \(x\) 是否出现在 \(n\) 中。
我们不断地取 \(n\) 的最后一位数字,并与 \(x\) 进行比较,如果相等,则将 \(\textit{hasX}\) 置为 \(\texttt{true}\)。同时,我们将 \(n\) 除以 \(10\) 来去掉最后一位数字。当 \(n\) 小于或等于 \(9\) 时,说明我们已经检查了所有的数字,此时如果 \(\textit{hasX}\) 为 \(\texttt{true}\) 且 \(n\) 不等于 \(x\),则说明 \(n\) 是一个有效数字,返回 \(\texttt{true}\);否则返回 \(\texttt{false}\)。
时间复杂度 \(O(\log n)\),其中 \(n\) 是输入的整数。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 10 | |