题目描述

样例输出

输出123058789,函数返回值9

输出54761,函数返回值5

接口说明

函数原型:

unsignedint Continumax(char** pOutputstr,  char* intputstr)

输入参数:
   char* intputstr  输入字符串;

输出参数:
   char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;

返回值:
  连续最长的数字串的长度

输入描述:

输入一个字符串。

输出描述:

输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度

示例1

输入

abcd12345ed125ss123058789

输出

123058789,9

代码如下:

 package com.yzh.hehe;

 import java.util.LinkedList;
import java.util.List;
import java.util.Scanner; public class FindLongestNumberStr { public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()) {
System.out.println(findLongestNumStr(scanner.nextLine()));
}
scanner.close();
} // 遍历输入字符串,用一个stringBuilder来记录连续的数字字符串,得到一个数字字符串先判断其length是否大于记录链表reList的第一个string的长度,
//如果大于等于就把最新的数字字符串添加为reList的第一个位置上,否则不做任何操作,这样最后reList的第一个位置上的就是结果字符串(存在相同长度就是最前面几个) private static String findLongestNumStr(String string) {
if (string==null||"".equals(string)) {
return "";
}
List<String>reList=new LinkedList<String>();//记录字符串
char[] cArr=string.toCharArray();
StringBuilder stringBuilder=new StringBuilder();
for (int i = 0; i <cArr.length; i++) {
//处理到一个数字字符串的末尾字符时,记录链表reList为空就直接添加到第一个位置上,否则就判断长度来处理
if (!(cArr[i]>='0'&&cArr[i]<='9')) {
if (reList.size()==0) {
reList.add(stringBuilder.toString()); }else if (stringBuilder.length()!=0&&stringBuilder.length()>=reList.get(0).length()) {
reList.add(0, stringBuilder.toString());
}
stringBuilder.delete(0, stringBuilder.length());
}else if ((cArr[i]>='0'&&cArr[i]<='9')) {
stringBuilder.append(cArr[i]);//只要是数字字符就可以向stringBuilder里添加
} }
//处理整个字符串一数字字符串结尾的情况,要单独处理这种情况
if (stringBuilder.length()!=0&&reList.size()==0) {
reList.add(stringBuilder.toString());
}else if (stringBuilder.length()!=0&&stringBuilder.length()>=reList.get(0).length()) {
reList.add(0, stringBuilder.toString());
}
int length=stringBuilder.length();
stringBuilder.delete(0, stringBuilder.length()); for (String temp : reList) {
if (temp.length()==length) {
stringBuilder.insert(0, temp);
}else{
break;
}
}
if (string.length()==0) {
return "";
}
stringBuilder.append(","+length);
return stringBuilder.toString(); } }

网络上见识更Java的做法:

将不是数字的字符全部变成‘a’,再将字符串用a来分割称数组,长度最大的数组的长度即为所求的长度,

 import java.util.*;
public class Main{
    public static void main(String[] args) {
 
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext())
        {
            String str1="";
            String str=scan.nextLine();
            for(char ch:str.toCharArray()){
                //将不是数字的字符全部变成a
                if(ch>='0' && ch<='9'){
                    str1+=ch;
                }else{
                    str1+="a";
                }
            }
            //按a分割
            String[] strs=str1.split("a");
            int max=0;//记录最长的连续数字串的长度
            for(int i=0;i<strs.length;i++){
                max=strs[i].length()>max?strs[i].length():max;
            }
            for(int i=0;i<strs.length;i++){
                if(strs[i].length()==max)
                    System.out.print(strs[i]);
            }
            System.out.println(","+max);
        }
    }
}

解题8(FindLongestNumberStr)的更多相关文章

  1. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  2. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  3. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

  4. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  5. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  6. wechall.net/stegano 解题心得

    /* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...

  7. Mountains(CVTE面试题)解题报告

    题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...

  8. timus 1180. Stone Game 解题报告

    1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...

  9. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

随机推荐

  1. python 读取grib \grib2

    一.环境准备(1).python3环境 (2).wgirb工具(用于读取grib1文件),下载地址:  ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib (3).wgi ...

  2. linux 之 source命令:

    source命令: source命令也称为“点命令”,也就是一个点符号(.).source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录. 用法: source filen ...

  3. 使用windows性能计数器监控cpu使用率

    https://blog.csdn.net/yabingshi_tech/article/details/26672355 2. http://blog.51cto.com/qixue/1702557 ...

  4. spark读取文本数据测试

    已知文本有三列,整理数据,并导入mysql scala> import org.apache.spark.sql.SQLContextimport org.apache.spark.sql.SQ ...

  5. ASPxLoadingPanel(珍藏版)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ASPxLoadingPanel ...

  6. beego orm 时间相差八小时

    使用beego框架,前端调用api插入一条数据到mysql,时间差了8个小时,fuck!!! 解决办法: 在db的url后面加上时区- dbDataSource = root:test@tcp(192 ...

  7. jquery实现增删改(伪)-老男孩作业day13

    使用jquery进行,文件的编写,实现自增id,删除,添加,编辑模式. jquery放在本地,src="jquery_js.js" 可以改成其他,或者在线的路径 readme &l ...

  8. flash推流工具<转>

    https://github.com/young-cowboy/young-cowboy.github.io https://www.cnblogs.com/xiaoniuzai/p/7129036. ...

  9. ELK实时日志分析平台环境部署--完整记录(转)

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  10. 正则表达式(TypeScript, JavaScript)

    课题 使用正则表达式匹配字符串 使用正则表达式 "\d{3}-(\d{4})-\d{2}" 匹配字符串 "123-4567-89" 返回匹配结果:'" ...