力扣 加一 java
时间: 2023-11-12 18:58:08 浏览: 133
好的,关于力扣的加一问题,可以参考以下代码:
```java
class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
for (int i = n - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] res = new int[n + 1];
res[0] = 1;
return res;
}
}
```
这个算法的思路是从数组的最后一位开始遍历,如果当前位小于9,则直接加1返回;否则将当前位设为0,继续遍历前一位。如果遍历完整个数组都没有返回,则说明需要在数组前面加上一个1。
相关问题
力扣加一python
力扣加一问题的Python解法有多种方法。以下是其中一种方法的完整代码:
```python
def plusOne(digits):
return [int(i) for i in str(int(''.join(str(j) for j in digits))) + 1]
```
这个方法使用了列表表达式和字符串操作,将整数列表转换为一个字符串,然后再将字符串转换为整数并加1,最后再将结果转换为一个整数列表。这个方法非常简洁,只需要一行代码就可以完成。
另一种方法是使用类的形式来实现:
```python
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
num = 0
j = 1
for i in digits[::-1]:
num += i * j
j *= 10
num += 1
result = [int(i) for i in str(num)]
return result
```
这个方法首先将整数列表表示为一个整数,然后将整数加1,再将结果转换为一个整数列表。这个方法使用了类和循环来实现。
另外还有一种特殊情况的解法,当数字列表为[9,9,9]时,需要在列表前面拼接一列表,并且将原有所有元素都置为0。以下是这种方法的完整代码:
```python
def plusOne(digits):
for i in reversed(range(len(digits))):
digits[i += 1
if digits[i < 10:
break
digits[i = 0
else:
return [1 + digits
return digits
```
这个方法使用了循环和条件语句来处理是否产生进位的情况,并根据不同的情况返回不同的结果。
以上是关于力扣加一问题的三种Python解法。每种解法都有其特点和适用场景,你可以根据具体的需求选择相应的方法。
力扣 1055Java
题目描述
给定两个字符串 `A` 和 `B`,返回 `A` 中可能的子序列与 `B` 中相等字符串数。
我们用 `S(A)` 表示 A 的所有字符的集合,而 `s(B)` 是 B 中字符的集合。
当 `A` 的一个子序列能与 `B` 中恰好的一个子序列匹配时,我们认为这是一个好的匹配。
形式上,我们首先用以下方式定义 A 和 B 中的子序列:
- 给定一个字符串 S,一个 S 的子序列是通过从 S 中删除一些(也可能不删除)字符而不更改其余元素的顺序而形成的。例如,"ACE" 是 "ABCDE" 的子序列,但 "AEC" 不是。
我们用以下方式定义一个好的匹配:
- 假设 A 和 B 中分别有相同长度的 n 个字符索引数组 `orderA` 和 `orderB`。
- 如果在 `orderA` 中,第 `i` 个字符出现在在样例中第 `j` 个字符之前(即那些在 `orderA` 中比第 `i` 个字符更早出现的字符的下标在在 `orderB` 中出现的位置全都在第 `j` 个字符之前),那么在 `orderB` 中第 `j` 个字符之后出现的下一个与之匹配的字符需要在 `orderA` 中出现在第 `i + 1` 个字符之后。
- 我们还需要这样的一个保证:在 `orderB` 中要出现的字符必须是从 `s(B)` 中不断地选择至多一次形成的字符串。例如,如果 `B = "xxy",那么不能选择 "xyy" 或 "yxx" 作为 `B` 自己的子序列。
示例 1:
```
输入:A = "acd", B = "abdc", 输出: 1
解释:A 中的一个子序列 "acd" 可以通过从 B 中删除 "b" 和 "d" 的方式得到。
```
示例 2:
```
输入:A = "db", B = "db", 输出:1
解释:A 中的所有字符与 B 中的每个字符都相等。
```
示例 3:
```
输入:A = "aaa", B = "aaa", 输出:3
解释:A 中的每个字符与 B 中的每个字符都相等,因此有 3 种不同的子序列与 B 相等,即 A 本身和空字符串,另外两个找不到 A 中的任何字符的子序列。
```
提示:
- `1 <= A.length, B.length <= 1000`
- `S(A)` 和 `s(B)` 都只包含小写字符。
阅读全文