`
haitaoandroid
  • 浏览: 27446 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

多玩最新笔试题目

 
阅读更多

多玩的三个大题:

1:X和Y是两串长度一样的字符串,X和Y的差异值定义为在两个字符串上对应位置上不一样的字符的个数,比如“ant”和“art”的差异值是1.给定两个字符串A和B,A的长度小于或者等于B,你可以在A的前面或者后面任意添加字符,舍得A和B长度一样。写一个方法求出最后能得到的最小的差异值是多少?

说明:A和B的长度范围是[1,50] , A和B的字符只包含‘a’-'z' ,A的长度小于或者等于B

这个题目做出来了,可是在笔试的时候递归那个地方写错了一点~~没有比较count了,下面是我的递归解法:

	int  minimize(String a , String b){
		int alen = a.length();
		int blen = b.length();
		int count =50;
		if(alen==blen){
			 count=0;
			for(int i=0;i<alen;i++){
				if(a.charAt(i)!=b.charAt(i)) count++;
			}
			return count;
		}
				String first = b.substring(1);
				String last = b.substring(0, b.length()-1);
				
				return Math.min(Math.min(minimize(a,first), minimize(a,last)),count);
	}

2:有一堆石子,或者被涂成红色或者被涂成绿色,从左到右排成一排。要求你用最小的次数对石子进行重新上色(不过只能涂成红色或者绿色),使得所有红色的石子都排在绿色石子的左边。程序输入参数为一个字符串String row,里面的每个字符只能是‘R’(代表红色)或者‘G’(代表绿色)。求出最少涂色几次,就能让所有红色的石子排在绿色石子的左边。

在考试的时候我是用递归来做,具体方法是求较小的值min("把一个石子上红色",“把一石子上绿色”)这样递归下去,终止条件是当字符串满足题意的时候。后来回来一想,根本没那么复杂,只要求做右边的R前面有几个G,最左边的G后面有几个R,然后取他们中的较小就可以了。只恨考试的时候怎么没发挥出来!!!!!(这个方法我测试了很多都正确,具体原理还有待考察),代码如下:

int minPaint(String row){
		char[] c = row.toCharArray();
		int rCount = 0;
		int gCount = 0;
		int i;
		for( i=c.length-1;i>=0;i--){  
			if(c[i]=='R') //求做右边的R
				break;
		}
		while(i>=0){
			if(c[i]=='G')   //最右边的R前面有几个G
				gCount++;
			i--;
		}
		for(i=0;i<c.length;i++){
			if(c[i]=='G')   //求最左边的G
				break;
		}
		while(i<c.length){
			if(c[i]=='R')  //最左边的G后面有几个R
				rCount++;
			i++;
		}
		return Math.min(rCount, gCount);  //取教小的
	}
3:有一个简单的编辑器只有两种命令

‘type <c>’,c是一个字符:把c添加到文本的末尾

‘undo <t>’,t是一个正整数:回滚t秒前所执行的操作,说明undo命令也可以被undo,undo命令对很久之前的操作不起作用

要求:编写一个函数public String getText(String[] cmds,int[] time)

cmd是输入的命令,包括上面两种命令,c取值a~z,t范围1~10^9 time是每个命令执行的时间。

示例:{"type a","type b","type c","type 3"} {1,2,3,5} Return:“a”

{"type a","type b","undo 2","type 2"} {1,2,3,4} Return:“a”

{"type a","undo 1","undo 1"} {1,2,3} Return:“a”
{"type a","type b","type c","undo 10"} {1,2,3,1000} Return:“abc”

这个题目是最后一道编程题,我没有时间做了,回来想了一下,没那么难,为什么现场笔试的时候会时间不够呢??????? 我的思路是:从后往前读命令,遇到undo命令就比较undo需要回退的时间,把这一段时间的操作都忽略,如果遇到type命令,则保留字符。最后输出字符的反转就ok了。我的代码如下:

	public static void main(String[] args) {  
		String[] c = {"type a","type b","type c","undo 10"};
		int[] t = {1,2,3,1000};
		System.out.println(getText(c,t));
    }
	public static String getText(String[] cmds,int[] time){
		StringBuffer sb = new StringBuffer("");
		int t = time[time.length-1];
		for(int i=cmds.length-1;i>0;){   //从后往前读命令
			if(cmds[i].contains("undo")){  //  遇到undo命令
				if(time[i]-time[i-1]>100){  //如果是隔了100秒以上,则undo命令不失效
					i--;
					continue;
				}
				else{
					int u = Integer.parseInt(cmds[i].substring(5));
					t = time[i]-u-1;    //undo命令回退的时间
					while(time[i]>t){     
						i--;
					}
				}
			}
			else{
				sb.append(cmds[i].substring(5)); //遇到type命令
				i--;
			}
		}
		if(cmds[0].contains("undo"))   //第一个命令单独处理
			return sb.reverse().toString();
		else
			return sb.append(cmds[0].substring(5)).reverse().toString();
	}
以上算法都是我自己的思考,不对之处,还望读者在后面指出,如果大家有更好的解法,也欢迎一起探讨!!!

其中试卷中还有一个小问题影响很深,题目是这样的,下面代码输出什么:

class Country  {
}
public class City extends Country {
    public static void main(String[] args) {
	       City c=new City();
	       new City().yy();
       }
	public  void yy() {
		System.out.println(this.getClass().getName());
		System.out.println(super.getClass().getName());
	}
}
getClass方法是final的,方法的含义是返回运行时对象的类 运行时的对象是new City(),虚拟机现在只有City对象,所以getclass返回的必然是YY, 至于super,不要把它想成指像Country的引用,他只是个关键字 用来调用父类的方法的.

参考:

http://topic.csdn.net/u/20110612/22/a76763f4-ab32-4a1f-8fa0-608224e0a52b.html

分享到:
评论

相关推荐

    多玩键盘连点器.rar

    多玩键盘连点器使用说明 1.打开我们的多玩键盘连点器。 2.在对应的按键动作前面勾选 " 有效 ",然后在输入框中按下对应按键。再设置下此按键动作的重复间隔时间。 3.在对应的游戏窗口,按启动热键启动按键的设置...

    多玩网数据库用户信息

    多玩网是一个知名的在线游戏社区和媒体平台,因此其用户数据很可能与游戏爱好者相关。 描述中的“多玩用户信息内容,亲测可用”表明数据已经被验证过,可以用于实际的应用场景。它特别提到了两个用途:邮件推广和大...

    多玩YY2013校园招聘大礼包

    通过对这份“多玩YY2013校园招聘大礼包”的详细解析,我们可以看出多玩YY在2013年的校园招聘活动中做了充分的准备,不仅提供了详细的职位信息和招聘流程指南,还分享了丰富的面试经验和笔试题目,以帮助应届毕业生更...

    多玩网首页flash焦点图

    这种焦点图通常由动态的Flash技术实现,以丰富的视觉效果展示网站的最新活动、热门游戏或者重要新闻。Flash焦点图不仅能够提升网站的视觉吸引力,还能有效地引导用户浏览和互动,从而提高用户体验。 Flash技术是一...

    2013 欢聚时代校园招聘笔试题(c++)

    "2013 欢聚时代校园招聘笔试题(c++)"这个标题揭示了我们即将探讨的主题,这是欢聚时代公司(广州多玩YY)在2013年针对校园招聘所设置的一场C++编程语言的笔试题目。欢聚时代是一家知名的互联网科技公司,以其在...

    110多玩单机游戏下载

    好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,好看,

    日本文娱产业报告:角川多玩国(39页).zip

    《日本文娱产业报告:角川多玩国》是一份深入探讨日本娱乐产业的详细报告,总计39页,涵盖了日本文娱行业的多个重要方面。这份报告由角川多玩国发布,旨在揭示该国在游戏、动漫、电影、音乐等领域的现状、发展趋势...

    ios-多玩App.zip

    高仿头条新闻首页、新闻推荐、视频推荐、视频播放、登录功能、图片功能、搜索功能、下拉刷新、上拉加载、本地数据存储等 下载地址:https://github.com/tianya2416/GKiOSApp

    球的一物多玩.ppt

    【球类一物多玩】活动是针对幼儿体育教育的一种创新方法,旨在通过皮球这一常见玩具,激发孩子们对体育活动的兴趣,提升他们的身体素质和运动技能。在这样的活动中,皮球可以被用来进行多种多样的游戏,如推滚、追逐...

    多玩Yy协议源码

    【多玩Yy协议源码】是一个涉及到网络通信和编程技术的主题,主要关注的是如何实现与多玩Yy(YY语音)服务器进行交互的代码。YY语音是一款流行的在线语音通讯软件,尤其在游戏社区中广泛应用,它允许用户进行实时语音...

    幼儿园大班体育活动教案《一球多玩》润新教育.txt

    幼儿园大班体育活动教案《一球多玩》润新教育.txt

    幼儿园教案2021-有趣的绳子(一物多玩).doc

    幼儿园体育游戏活动教案 - 有趣的绳子(一物多玩) 本教案旨在通过“有趣的绳子”活动,提高幼儿的身体协调能力、合作意识和创新精神。该活动适合小班幼儿,旨在培养他们的基本动作能力、空间意识和社交能力。 ...

    多玩lol手机迷你盒子如何使用.docx

    《多玩LOL手机迷你盒子》是一款专为《英雄联盟》(League of Legends,简称LOL)玩家设计的应用程序,它提供了多种实用的功能,包括但不限于查看玩家战绩、查询英雄数据、获取最新游戏资讯等。对于LOL玩家来说,这款...

    知乎问答:多玩游戏网是怎么发展起来的?.docx

    ### 多玩游戏网的发展历程与关键转折点 #### 一、初创阶段:专注与突破 多玩游戏网成立于2005年左右,最初以其魔兽专区闻名。这一阶段,多玩游戏网依靠一群充满激情的编辑团队,通过专注于论坛建设,积累了初步的...

    一款集壁纸、音乐、新闻资讯的多玩Apps.zip

    标题中的“一款集壁纸、音乐、新闻资讯的多玩Apps.zip”表明这是一款包含多种功能的应用程序,可能是一个集成式的平台,用户可以在其中找到壁纸、音乐以及新闻资讯等多元化的内容。描述中的信息进一步确认了这是一个...

    多玩魔兽盒子暗黑3盒子v2.5.17中文免费版

    【功能介介绍】 ①一键换装 盒子的一键换装功能是模拟手动的鼠标键盘动作,帮助你只需按一下设定好的热键,即可将身上装备更换为背包中对应的备选装备;经我们长期测试,安全性有保障。 注意:请勿在与商人对话的...

    多玩互联网媒体的前景.ppt

    多玩互联网媒体的前景.ppt

    多玩网首页flash焦点图.zip

    【标题】"多玩网首页flash焦点图.zip"指的是一个压缩包文件,其中包含了多玩游戏网首页上使用的Flash焦点图的相关资源。焦点图通常是指在网页上以轮播形式展示的一组高关注度图片或内容,用于吸引用户的注意力并引导...

    多玩lol战斗力查询源码

    《多玩LOL战斗力查询源码解析与应用》 在电子竞技领域,英雄联盟(League of Legends,简称LOL)是一款备受瞩目的游戏,而玩家的战斗力是衡量其在游戏中实力的重要指标。多玩LOL战斗力查询系统就是这样一个平台,它...

Global site tag (gtag.js) - Google Analytics