题目描述

样例输出

输出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. 解决Cell重用问题

    在显示的过程中,出现了内容重叠的问题,其实就是UITableViewCell重用机制的问题. 解决方法一:对在cell中添加的控件设置tag的方法 在cell的contentView上需要添加控件,那 ...

  2. c++ map 官方样例

    #include <iostream> #include <string> #include <iomanip> #include <map> temp ...

  3. linux base shell 基础语法2

    转载 http://blog.csdn.net/aggrelxf/article/details/8263110 单引 双引 反引用[] [[]] 将命令的输出读入一个变量中,可以将它放入双引号中,即 ...

  4. Python基础7 面向对象编程进阶

    本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...

  5. 访问服务器时一直在转圈,等待localhost响应

    之后把zookeeper的服务器的防火墙关了,就有响应了.可能就是防火墙的问题.

  6. Memcache操作类

    using Memcached.ClientLibrary; using System; using System.Collections.Generic; using System.Linq; us ...

  7. Linux服务器mysql,nginx等自动停止的排查,以及解决方法

    最近发现自己使用的某台云服务武器只要稍微流量大一点,就会出现莫名的的数据库连接错误的情况 ,然后连上服务器查看,发现mysql进程被结束了,经常出现这种情况,这还怎么得了,然后第一时间查看mysql日 ...

  8. 【JEECG技术文档】JEECG平台对外接口JWT应用文档V3.7.2

    一. 接口方式 接口调用采用http协议,rest请求方式: 二. 接口安全 接口安全采用Json web token (JWT)机制,基于token的鉴权机制. 1. 机制说明 基于token的鉴权 ...

  9. window(win7)下安装ubuntu14.04lts (desktop)系统

    一.前期准备 1.大于2G的U盘一个(我的系统盘制作完成后大约占1个多G的容量) 2.已下载好的Ubuntu安装文件(选择在官网下载,有32和64位选择) 3.已安装好UltraISO软件的电脑(Ul ...

  10. ReentrantLock 学习笔记

    有篇写的很不错的博客:https://blog.csdn.net/aesop_wubo/article/details/7555956    基于JDK1.8 参考着看源码 ,弄清楚lock()和un ...