一段string字符串数字如何找到最长平台并输出,用java写一个
时间: 2024-11-13 11:24:03 浏览: 5
字符串比较
在Java中,要找出一个包含数字的字符串中最长的连续数字平台(即由数字组成的连续子串),你可以使用滑动窗口的方法。首先,定义两个指针,一个指向当前查找的开始位置(left),另一个用于记录有效平台的右边界(right)。然后逐个字符遍历字符串,检查每个字符是否是数字:
```java
public class Main {
public static void main(String[] args) {
String str = "ab1c2d3ef4gh5ijk6"; // 测试字符串
System.out.println(longestPlatform(str));
}
public static String longestPlatform(String s) {
int left = 0, right = 0;
int maxLength = 0;
StringBuilder result = new StringBuilder();
while (right < s.length()) {
if (Character.isDigit(s.charAt(right))) { // 如果是数字
right++; // 右移右边界
while (right < s.length() && Character.isDigit(s.charAt(right))) { // 检查连续的数字
right++;
}
int length = right - left; // 计算平台长度
if (length > maxLength) {
maxLength = length;
result.setLength(0); // 更新最长平台
result.append(s.substring(left, left + length)); // 保存最长平台
} else if (length == maxLength) { // 如果长度相同,更新结果
result.append(",");
result.append(s.substring(left, left + length));
}
left = right; // 清空左边界,从新检测
} else { // 非数字,移动左边界
left = right + 1;
right++;
}
}
return result.toString(); // 返回最长平台
}
}
```
运行此程序会输出最长的连续数字平台,如"123", "456"。如果输入的字符串里没有连续的数字,则返回空字符串。
阅读全文