题目描述

样例输出

输出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. HANA私有云解决方案

        在移动互联网时代,不支持在云上的部署一定会落伍的,HANA作为SAP力推的技术,对云的支持也做的很不错,今天我们就来探讨一下HANA私有云解决方案,至于公有云或者混合云,思路也是大同小异了. ...

  2. 阿里云实现putty私钥登录全过程

    阿里云实现putty私钥登录全过程 1 putty生成公钥和私钥 1)putty生成公钥和私钥 记得在空白区域 滑动 2 公钥上传到阿里云 1)公钥上传  私钥存到本地 3 公钥绑定要登录的实例 4 ...

  3. Flex4学习笔记 checkBox RadioButton DropDownList colorPicker

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  4. java接口的学习笔记

    1接口 接口是一个特殊的类,在JAVA中,接口是由抽象方法和全局敞亮组成. 在JAVA忠使用INTERFACE定义接口. public class InterfaceDemo { public sta ...

  5. jquery ligerUI中ligerComboBox 初始值问题

    ligerComboBox项目中运用总结内容如下: $("#selectId").ligerComboBox({ data: proData, initValue: 0});这就默 ...

  6. Chrome(谷歌浏览器)和Firefox浏览器flash的swf文件发黑不透明问题解决方法

    一直以来看到各大网站的FLASH都是黑框框的,很好奇,难道他们不知道flash是可以设成透明的?于是用IE Tab插件浏览了下,发现人家的网页又正常,这样一来我就开始怀疑是我的Chrome有问题,于是 ...

  7. makefile中 $@, $^, $<, $?含义

    $@ 表示目标文件 $^ 表示所有的依赖文件 $< 表示第一个依赖文件 $? 表示比目标还要新的依赖文件列表 例子 root_num.exe: root_num.o my_root.o gcc ...

  8. 飞鸽传书linux进程退出不彻底

    问题描述: 飞鸽传书linux版本(QIpmsg)是有问题的. 在ubuntu14.04上运行的时候,没有任务栏图标,点击关闭也不能退出进程,端口仍然占用,无法再次运行. 这个问题截至1.2.1412 ...

  9. MySql Delete不走索引问题

    如果delete语句带有查询,写法不对会导致不走索引. 简单粗暴的办法:拆两条sql,一条查询,一条delete ======================= [不走索引的写法] DELETE FR ...

  10. J2SE 8的流库 --- 转换流, 得到的还是流

    流的转换, 按照条件过滤/映射/摊平/截取/丢弃/连接/去重/排序. 辅助方法 public static int myCompare(String x, String y) { if(x.lengt ...