题目描述
样例输出
输出123058789,函数返回值9
输出54761,函数返回值5
接口说明
函数原型:
unsignedint Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串;
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;
如果输入字符串是空,也应该返回空字符串;
返回值:
连续最长的数字串的长度
输入描述:
输入一个字符串。
输出描述:
输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
输入例子:
abcd12345ed125ss123058789
输出例子:
123058789,9
Java代码实现
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- /**
- * 在字符串中找出连续最长的数字串
- *
- * @author WWJ
- *
- */
- public class Main {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner sc = new Scanner(System.in);
- while (sc.hasNextLine()) {
- String string = sc.nextLine();
- StringBuilder stringBuilder = new StringBuilder();
- int num = continumax(stringBuilder, string);
- if (num != 0) {
- System.out.println(stringBuilder.toString() + "," + num);
- } else {
- System.out.println(0);
- }
- }
- }
- private static int continumax(StringBuilder stringBuilder, String string) {
- List<Integer> start = new ArrayList<>();
- List<Integer> end = new ArrayList<>();
- int max = 0;
- int currStart = 0;
- int currEnd = 0;
- boolean findFirst = false;
- for (int i = 0; i < string.length(); i++) {
- if (string.charAt(i) >= '0' && string.charAt(i) <= '9') {
- if (!findFirst) {
- findFirst = true;
- currStart = i;
- }
- if (i == string.length() - 1) {
- currEnd = i;
- if (currEnd - currStart + 1 > max) {
- start.clear();
- end.clear();
- start.add(currStart);
- end.add(currEnd);
- max = currEnd - currStart + 1;
- } else if (currEnd - currStart + 1 == max) {
- start.add(currStart);
- end.add(currEnd);
- }
- findFirst = false;
- }
- } else {
- if (findFirst) {
- currEnd = i - 1;
- if (currEnd - currStart + 1 > max) {
- start.clear();
- end.clear();
- start.add(currStart);
- end.add(currEnd);
- max = currEnd - currStart + 1;
- } else if (currEnd - currStart + 1 == max) {
- start.add(currStart);
- end.add(currEnd);
- }
- findFirst = false;
- }
- }
- }
- if (max != 0) {
- for (int i = 0; i < start.size(); i++) {
- if (end.get(i) == string.length()) {
- stringBuilder.append(string.substring(start.get(i)));
- } else {
- stringBuilder.append(string.substring(start.get(i), end.get(i) + 1));
- }
- }
- }
- return max;
- }
- }