解题8(FindLongestNumberStr)
题目描述
样例输出
输出123058789,函数返回值9
输出54761,函数返回值5
接口说明
函数原型:
unsignedint Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串;
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串;
返回值:
连续最长的数字串的长度
输入描述:
输入一个字符串。
输出描述:
输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
输入
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)的更多相关文章
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
- 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划
[BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- wechall.net/stegano 解题心得
/* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...
- Mountains(CVTE面试题)解题报告
题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...
- timus 1180. Stone Game 解题报告
1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...
- timus 1175. Strange Sequence 解题报告
1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...
随机推荐
- odps 使用参考 & tips
1. 自定义udf 编写udf 1)pom.xml <dependency> <groupId>com.aliyun.odps</groupId> <art ...
- 开发升级-微信小程序(感谢黄秀杰老师)
借助老师的博客 初次认识到了小程序开发的便捷,同时也深刻的感受到了,时代在不断地进步,编译将更加平民化,每一个人都将可以动手创造一款不错的软件 在黄秀杰老师的模板下,同时进行了修改,也在老师的模板下, ...
- scrapy工作原理探秘
def _next_request_from_scheduler(self, spider):#engine从调度器取得下一个request slot = self.slot request = sl ...
- leetcode1010
class Solution: def numPairsDivisibleBy60(self, time: 'List[int]') -> int: sums = 0 s = {} n = le ...
- __file__ 作用以及模块导入方法
python 执行py 文件的时候,默认就会把当前目录增加到sys.path中 import os print(__file__) #打印文件当前的位置 直接在目录里面执行,结果显示当前文件(pych ...
- node.js 爬虫动态代理ip
参考文章: https://andyliwr.github.io/2017/12/05/nodejs_spider_ip/ https://segmentfault.com/q/10100000081 ...
- Java快速开发平台强大的代码生成器,JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布
JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布 此版本为Vue+ElementUI SPA单页面应用版本,提供新一代风格代码生成器模板,采用Vue技术,提供两套精美模板E ...
- Zookpeer集群节点
Adaptive Communication Environment(自适配通信环境),简称ACE. reference artfile:zookeeper单节点与集群的安装https://blog. ...
- elasticSearch-DSL
DSL: query_string match match_phrase match_phrase_prefix multi_match simple_query_string term term ...
- Java IO中转换流的作用
在<Java网络编程>中,有这样一段话: ”Reader和Writer最重要的子类是InputStreamReader和OutputStreamWriter类. InputStreamRe ...