在Java集合list中,出现连续的数字的最大数字个数,用java代码实现
时间: 2023-04-06 17:01:50 浏览: 72
可以使用双指针法来解决这个问题,具体实现如下:
```java
public static int maxConsecutiveNumbers(List<Integer> list) {
int maxCount = 0;
int count = 1;
for (int i = 1; i < list.size(); i++) {
if (list.get(i) - list.get(i - 1) == 1) {
count++;
} else {
maxCount = Math.max(maxCount, count);
count = 1;
}
}
return Math.max(maxCount, count);
}
```
这个方法的思路是,使用两个指针 i 和 j,分别指向相邻的两个数字。如果它们之间的差值为 1,说明它们是连续的数字,此时将计数器 count 加 1。如果它们之间的差值不为 1,说明这个连续数字的序列已经结束,此时将计数器 count 与当前的最大计数器 maxCount 比较,取较大值作为新的最大计数器。最后返回最大计数器的值即可。
相关问题
java 在字符串集合当中,获取集合连续相同的数字最大个数
你可以使用正则表达式来完成这个任务。具体的做法是首先将字符串集合转换成一个字符串,然后使用正则表达式匹配连续相同的数字,最后统计匹配到的数字个数并返回结果。
示例代码如下:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> strs = new ArrayList<>();
Collections.addAll(strs, "123", "11", "99", "55555", "999999");
int maxCount = getMaxCountOfSameDigits(strs);
System.out.println(maxCount); // 输出:6
}
public static int getMaxCountOfSameDigits(List<String> strs) {
String joinedStr = String.join("", strs); // 将字符串集合转换为一个字符串
String pattern = "(\\d)\\1*"; // 匹配连续相同的数字的正则表达式
int maxCount = 0;
java.util.regex.Matcher matcher = java.util.regex.Pattern.compile(pattern).matcher(joinedStr);
while (matcher.find()) {
int count = matcher.group().length();
if (count > maxCount) {
maxCount = count;
}
}
return maxCount;
}
}
```
上面的代码中,我们首先定义了一个字符串集合 `strs`,其中包含了一些数字串。然后我们调用 `getMaxCountOfSameDigits` 方法获取集合中连续相同的数字最大个数。这个方法首先使用 `String.join` 方法将字符串集合转换成一个字符串,然后使用正则表达式匹配连续相同的数字,并统计匹配到的数字个数,最后返回结果。
在本例中,我们使用的正则表达式 `(\\d)\\1*` 中,`\\d` 表示数字,`\\1` 表示与第一个括号中匹配的内容相同,`*` 表示匹配零个或多个连续出现的前面的正则表达式。这个正则表达式可以匹配连续相同的数字。
java 获取集合连续相同的数字最大个数
您可以使用一个循环来遍历集合中的所有数字,并使用一个计数器来跟踪连续的数字。每次遇到相邻的数字相同时,将计数器加1。如果当前计数器的值大于最大值,则更新最大值。如果遇到不同的数字,则重置计数器为1。以下是一个示例代码:
```java
public static int findMaxConsecutiveRepeatedNumbers(List<Integer> nums) {
int max = 0; // 最大相同数字数量
int count = 1; // 当前相同数字数量
for (int i = 1; i < nums.size(); i++) {
if (nums.get(i) == nums.get(i - 1)) {
count++;
} else {
max = Math.max(max, count);
count = 1;
}
}
return Math.max(max, count);
}
```
在这个示例代码中,我们使用了一个`List`来存储数字集合。`findMaxConsecutiveRepeatedNumbers`方法用于查找最大连续相同数字数量,并返回结果。我们使用了一个`for`循环来遍历整个集合,从第二个数字开始(因为我们需要比较相邻的数字)。如果当前数字等于前一个数字,则将计数器加1。如果当前数字与前一个数字不同,则更新最大值并重置计数器为1。最后返回最大值即可。
希望对您有所帮助!