文档章节

一道笔试题

小强零号
 小强零号
发布于 2015/10/15 23:31
字数 535
阅读 136
收藏 7

样例输入:

asdfetgfg
123df43
hg1234ds4321
a234dsf567sd657

样例输出:

null
123
1234
567

示例解题代码(Java):

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		ArrayList<String> strs = new ArrayList<String>();
		
		//输入字符串
		while(sc.hasNextLine()) {
			String temp = sc.nextLine();
			if(temp.equals(""))
				break;
			strs.add(temp);
		}
		//关闭Scanner
		sc.close();
	
	        //运行查找函数
		for(int i = 0; i < strs.size(); i++) {
			System.out.println(getMaxSubStr(strs.get(i)));
		}
	}
	
	public static String getMaxSubStr(String source) {
		
		//抽取出source中的数字串
		ArrayList<String> numbers = new ArrayList<String>();
		int start = 0;
		for(int i = 0; i < source.length(); i++) {
			while(i < source.length() && !Character.isDigit(source.charAt(i))) {
				i++;
			}
			start = i;
			while(i < source.length() && Character.isDigit(source.charAt(i))) {
				i++;
			}
			if(i - start > 1) {
				numbers.add(source.substring(start, i));
			}
		}
		
		//如果source中不含数字子串,则返回null
		if(numbers.size() == 0) return null;
		
		//找数字子串List中长度最大的串的下标maxIndex,比较时用小于号,这样找出的是第一个最长子串
		int maxIndex = 0;
		for(int i = 1; i < numbers.size(); i++) {
			if(numbers.get(maxIndex).length() < numbers.get(i).length()) {
				maxIndex = i;
			}
		}
		
		//查找最长数字子串是否唯一,在maxIndexs中存放最长数字子串的下标
		ArrayList<Integer> maxIndexs = new ArrayList<Integer>();
		for(int i = 0; i < numbers.size(); i++) {
			if(numbers.get(maxIndex).length() == numbers.get(i).length()) {
				maxIndexs.add(i);
			}
		}
		
		//如果最长数字子串不唯一(即maxIndexs长度大于1),则找出其中各字符对应数字之和最大的那个
		if(maxIndexs.size() > 1) {
		        //计算每个最长子串各字符对应数字之和,存放在num数组中,num数组和maxIndexs一一对应
			int[] num = new int[maxIndexs.size()];
			for(int i = 0; i < maxIndexs.size(); i++) {
				for(int j = 0; j < numbers.get(maxIndexs.get(i)).length(); j++) {
					num[i] += "0123456789".indexOf(numbers.get(maxIndexs.get(i)).charAt(j));
				}
			}
			//找出num中最大值的下标,通过maxIndexs找到这个下标所对应的numbers中的子串下标
			int index = 0;
			for(int i = 1; i < maxIndexs.size(); i++) {
				if(num[index] < num[i])
					index = i;
			}
			//maxIndex得到目标子串在numbers中的下标
			maxIndex = maxIndexs.get(index);
		}
		
		//返回目标子串
		return numbers.get(maxIndex);
	}

}

getMaxSubStr()的计算流程:


© 著作权归作者所有

共有 人打赏支持
小强零号
粉丝 6
博文 31
码字总数 12473
作品 0
长宁
程序员
18届清华硕士狂拿18家互联网公司offer

2018校招总结(外企,国内大公司,国内创业公司) 本篇是我参加2018春招实习和秋招的求职经历,除了笔试面试中遇到的一些问题,更多的是一些个人想法。 春招和秋招面了不少公司,实习offer有...

野梦M
2017/12/18
0
1
HR怎么从面试中了解程序员的真实水平?

HR肯定不懂或至少不太懂专业技术,这点,是一定的。 一个外行,怎么面试内行,很多求职者会很好奇。 其实,HR初试,更多的是看“人怎么样”,对“能力行不行”的观察,只是一个大概的情况,后...

明哥聊求职
2017/11/27
0
0
请教各位朋友们,django如何实现在线笔试系统

各位朋友们好,最近有在做在线笔试系统,在数据库里建立用户表,试卷表,用户笔试得分表,但是具体地如何在点击下一题显示下一道题目,在最后提交的时候,把结果进行提交,并如何评判笔试结果...

qingyuanlu
2015/09/28
130
0
一道算法笔试题,大家来看看

最近校园招聘比较火爆,参加了不少公司的笔试,昨天的网康笔试里有一道算法题,大家来看看怎么做: 大概是这样的:N个人围成一个圆圈,从某个人开始报数,报数为K的倍数的人退出这个圆圈,其...

YueZheng
2012/10/24
505
7
一个找规律的题目,小弟驽钝

77 49 36 () 8,括号内该填啥,一道笔试题,不得其解

Padding
2012/12/24
317
7

没有更多内容

加载失败,请刷新页面

加载更多

HTTP get、post 中请求json与map传参格式

import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.List;im......

寒风中的独狼
17分钟前
0
0
IDEA中tomcat启动慢 耗时10分钟

用idea中的tomcat以debug模式启动,会非常的慢,而正常启动没啥问题;原因是debug模式中View Breakpoints断点代码,断点的是jar包,而现在启动由于jar包发生变化,导致启动时一直处于等待中。...

GoodMarver
29分钟前
2
0
Linux学习-10月18(awk)

9.6/9.7 awk 一、awk简介   1. awk是一种编程语言,用于对文本和数据进行处理的   2. 具有强大的文本格式化能力   3. 利用命令awk,可以将一些文本整理成为我们想要的样子   4. 命令awk...

wxy丶
30分钟前
0
0
「ThinkPHP开发者周刊」第3期——官宣:5.1版本发布LTS版本

[ 本周读数 ] 70——还剩70天,PHP5.6年底不再提供支持 PHP5.6的安全支持将于2018年12月31日终止。即两个多月后,使用 PHP 5.6 版本的网站将不再收到安全漏洞或错误更新。 较新的 PHP7.0在今...

流年
38分钟前
1
0
Spring IOC 之 注册 BeanDefinition

获取 Document 对象后,会根据该对象和 Resource 资源对象调用 registerBeanDefinitions() 方法,开始注册 BeanDefinitions 首先调用 createBeanDefinitionDocumentReader() 方法实例化 Bean...

职业搬砖20年
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部