文档章节

一道笔试题

小强零号
 小强零号
发布于 2015/10/15 23:31
字数 535
阅读 175
收藏 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
长宁
程序员
私信 提问
加载中
请先登录后再评论。
多益游戏研发笔试-2019秋招

今天...早上10点赶去西电去参加了宣讲会,完了做了一个笔试....估计没什么情况。编程题不会做。下午又做了平安产险的笔试(比较随便,编程是一道Leetcode简单题吧---求最大连续子数组的和O(n...

osc_tcq8jpfc
2019/09/06
2
0
设计一个计算连续Leading Zeros个数的电路

这是一道笔试题 本文分享自微信公众号 - 数字芯片实验室(ghe85b37ca379a)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

wonderAsic
2019/08/09
0
0
手撕ts面试题——不能不掌握的ts高级特性(三)

引言 在上一篇我重点讲述了 ts 的 keyof、in 以及 infer。本期将结合一道笔试题重点讲述 ts 的一些其他内置操作符 。 本期涉及的操作符如下: Partial Required Readonly Pick<T,K extends k...

osc_4hct2n4z
05/04
28
0
枚举算法的优化套路

   枚举算法的优化套路   最近接触了一门《ACM算法入门基础》的课程,个人感觉挺不错的,所以特地整理了一下,和大家分享一下。   希望能够给算法入门的小伙伴带来一点点帮助,水平不高...

osc_pn11u1x9
2018/08/08
0
0
2020 届计算机视觉算法工程师秋招进程

前言 经历过春季实习生招聘的洗礼,我已经意识到了秋招的严峻性,所以一边实习一边一直关注着秋招。虽然 6 月下旬已经投出了秋招的第一份简历,然后,事实却是,落花有意,流水无情。在提前批...

osc_2cmuv2dd
2019/09/28
17
0

没有更多内容

加载失败,请刷新页面

加载更多

Whoosh:Python 的轻量级搜索工具

👆 “Python猫” ,一个值得加星标的公众号 花下猫语:周末愉快啊!今天还是给大家分享一篇文章。既然你已点进来看了,那说明你对此话题应该是感兴趣的,希望你读后有所收获吧。Best wish...

Python猫
2019/11/23
13
0
Spring升级案例之IOC介绍和依赖注入

Spring升级案例之IOC介绍和依赖注入 一、IOC的概念和作用 1.什么是IOC 控制反转(Inversion of Control, IoC)是一种设计思想,在Java中就是将设计好的对象交给容器控制,而不是传统的在对象内...

osc_xmvqghwh
19分钟前
0
0
KVM影子页表

2019年是崭新的一年,Linux kernel 5.0 低调发布了,给我的感觉就是,牛人不断在飞跃,我们也要策马奔腾赶紧追赶才有些许出路。 内核子系统众多,我发现KVM是个非常有意思的子系统,对cpu,内...

jeffxiemo
2019/01/08
0
0
重磅!入门者福音:从0学Java系列文章即将推出!

好消息!小编为了回馈母校(川农),决定和学校物联网系携手打造《从0开始学Java》系列文章,目前该系列文章由小编本人和一位研究生师姐撰写,接下来该系列文章将在本公众号陆续推出,欢迎关...

beifengtz
2019/07/28
17
0
围绕Java反射,BAT的面试官可以问出多少花样

好久不见,在疫情的控制下,我急需一杯奶茶续续命! 作者:王炸 |【坚持1000篇原创】 2020.2.21 王炸的第60篇原创 ☝️先赞后看是技术人的传统美德☝️ 有小朋友问我,我刚刚学Java,没接触过...

励志程序员
02/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部