文档章节

一道笔试题

小强零号
 小强零号
发布于 2015/10/15 23:31
字数 535
阅读 135
收藏 7
点赞 0
评论 0

样例输入:

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
博文 30
码字总数 12092
作品 0
长宁
程序员
18届清华硕士狂拿18家互联网公司offer

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

野梦M ⋅ 2017/12/18 ⋅ 1

HR怎么从面试中了解程序员的真实水平?

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

明哥聊求职 ⋅ 2017/11/27 ⋅ 0

请教各位朋友们,django如何实现在线笔试系统

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

qingyuanlu ⋅ 2015/09/28 ⋅ 0

一道算法笔试题,大家来看看

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

YueZheng ⋅ 2012/10/24 ⋅ 7

一个找规律的题目,小弟驽钝

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

Padding ⋅ 2012/12/24 ⋅ 7

把一个字符串反转,单词不翻转

baidu PC端开发工程师的一道笔试题。 写一个函数,将字符串反转,反转方式如下:“I am a student”反转成“student a am I”,

习总 ⋅ 2012/10/29 ⋅ 14

java 接口可以定义静态方法么?

java 接口可以定义静态方法么? 今天看了下JAVA8的新特性http://www.oschina.net/translate/everything-about-java-8,有一句话说接口里已经完全可以定义静态方法了,如果去笔试出了这样一道题...

益达先生 ⋅ 2014/03/20 ⋅ 3

哪个Map最适合用来实现LRU Cache?

30. 下面哪个Map最适合用来实现LRU Cache? A. Hashtable B. TreeMap C. HashMap D. IdentityHashMap E. WeakHashMap 这是一道笔试题来的,我自己想了下,到网上也搜索了下,大都使用LinkedH...

_Mryao ⋅ 2013/12/18 ⋅ 4

请找出数组中重复次数最多且最大的数,java试题

今天早上去笔试,有一道大概如下的算法题:给定一个数组如{9, 1, 6, 3, 3, 1, 2, 1, 8},请找出该数组中出现次数最多且最大的那个数及出现的次数。可惜,本人的算法知识不是很好,当时没能做...

rutine ⋅ 2011/06/15 ⋅ 10

一道笔试算法题

题目如下:1,2,3,5,8,13…设计一个递归算法求第30位数字。 C#实现: private static int Func1(int max, int current, int c1, int c2) { if(current == 3) Console.Write("1,2,"); int c3 ......

彭博 ⋅ 2012/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

思路分析 如何通过反射 给 bean entity 对象 的List 集合属性赋值?

其实 这块 大家 去 看 springmvc 源码 肯定可以找到实现办法。 因为 spirngmvc 的方法 是可以 为 对象 参数里面的 list 属性赋值的。 我也没有看 具体的 mvc 源码实现,我这里只是 写一个 简...

之渊 ⋅ 34分钟前 ⋅ 0

vim使用手册--配对括号的查找

1、把光标放在标记有(、[或{处。 2、按%字符 3、此时光标的位置应当在配对的括号处 4、再次按%就可以跳回配对的第一个括号处。

dragon_tech ⋅ 38分钟前 ⋅ 0

c++ 、object-c printf,%02X和%x有什么区别 ?

%x即按十六进制输出,英文字母小写,右对齐。 %02X有以下变化:英文字母变大写,如果输出字符不足两位的,输出两位宽度,右对齐,空的一位补0。超过两位的,全部输出。 如果不用 %02x 会出现...

yizhichao ⋅ 43分钟前 ⋅ 0

Spring源码解析(七)——实例创建(中)

前言 上一节讲到了,Spring 会根据实例的作用域执行不同的创建逻辑,分别是 Singleton、Prototype、其他 Scope,其中 Singleton 会调用 getSingleton 从缓存中获取,缓存中没有才会创建实例;...

MarvelCode ⋅ 44分钟前 ⋅ 0

Thrift RPC实战(六) spring集成thrift

1.服务端设置 对泛型Thrift Service的支持, 通过采用spring配置以及反射的方式来实现.对于一个服务提供者来说,需要提供端口,接口以及接口实现类,因此在接口中spring配置文件中配置如下 <!...

lemonLove ⋅ 46分钟前 ⋅ 0

oracle11g自动分区使用

为什么使用自动分区? 在oracle11g之前,oracle是不支持自动分区功能的,这就可能导致我们系统在运行一段时间之后,就需要看看分区是否创建或者写触发器进行创建分区,否则就会导致数据无法入...

strict_nerd ⋅ 57分钟前 ⋅ 0

Spring mvc ViewResolver视图解析器实现机制

概要 我们在controller里面经常这样return一个ModelAndView。 return new ModelAndView("userList", "users", userList); DispatcherServlet 靠 ViewResolver 把 userList 解析为 /WEB-INF......

轨迹_ ⋅ 今天 ⋅ 0

策略模式

1.策略模式 策略模式是同一个行为的不同处理办法。策略模式和简单工厂模式的区别:1.策略模式主要是方法的执行方式,工厂模式要获取的对象。两者的侧重点不同。 ...

Cobbage ⋅ 今天 ⋅ 0

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 今天 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部