CVTE笔试编程笔记
来源:互联网 发布:淘桃美工 编辑:程序博客网 时间:2024/05/21 12:47
前几天参加了CVTE 的在线笔试,由于不小心把岗位填错了,所以只能硬着头皮去笔试,果然选择题就跪了=。=,后面是两道编程题,题目不难,虽然在考试的时候还做错了,这两天有空就整理了一下,方便以后自己可以看一看。
编程1:(大致题目)输入某一字符串,输出该字符串中包含有几个“CVTE”的字样(忽略大小写),例:“WELCOME TO CVTE,COME ON CVTE”,OUTPUT: 2
当时的解题思路:利用String 自带的方法indexOf()找到第一个出现的位置,标记此位置作为fromIndex继续往下找,第一反应是递归,后来整理的时候发现其实不用这么麻烦。最终整理出来的结果直接用一个变量来标识代替递归的想法。还有另一种方法就是利用 java.util.regex.Matcher.find() 方法用正则表达式进行处理。
public static int appearNumberRegex(String srcText, String findText) { int count = 0; Pattern p = Pattern.compile(findText); Matcher m = p.matcher(srcText); while (m.find()) { count++; } return count; } public static int appearNumber(String inputText, String findText) { int count = 0; int index = 0; if(inputText==null || inputText.length()==0 || findText.length()==0) return 0; findText = findText.toLowerCase(); while ((index = inputText.toLowerCase().indexOf(findText, index)) != -1) { index = index + findText.length(); count++; } return count; }
编程2:(大致题目)输入一个偶数记为M,程序输出两个素数记为P1,P2,要求两个素数之和等于输出偶数,且两个素数之差是所有和为该偶数中的素数中最小的一对。例:输入18 ,满足第一个要求的素数对有5/13、7/11,最终输出的应该是7/11。
当时的解题思路:应该弄两个循环,判断两个素数,用一个变量来存放两个素数的差值,假设第一对找到的差值是最小的,用两个变量将值存入起来,第二次再进行比较,直到循环结束。一开始两个循环的起始值都是2,后来整理的时候发现还可以再优化,内层循环可以直接从M/2从始。(补充:素数 >2 且除1和本身外不能被其他数整除)
private void GetPrimeNumber(int evenNumber){ long start = System.currentTimeMillis(); int min = evenNumber; int temp = 0; int x=0; int y=0; if(evenNumber <2) return; for (int i=2; i<evenNumber/2; i++){ for(int j=evenNumber/2; j<=evenNumber; j++){ //从evenNumber/2 开始可以提高效率 if(isPrimeNumber(i) && isPrimeNumber(j) && i+j==evenNumber){ temp = j-i; if(min > temp){ x= i; y= j; min = temp; } } } } if(x!=0 && y!=0){ System.out.println(x+", "+y); } long speech = System.currentTimeMillis() - start; System.out.println(speech); } /* * return true if is prime number */ private boolean isPrimeNumber(int input){ boolean isPrime = true; for (int i=2; i<Math.sqrt(input); i++){ if(input%i==0){ isPrime = false; break; } } return isPrime; }
今天发现编程1还有更简单的解法,可以利用org.apache.commons.lang3.StringUtils 提供的方法countMathes()直接返回出现次数。
private static int appearNumberStringUtils(String inputString,String findText){ if(inputString==null || inputString.length()==0 || findText==null || findText.length()==0) return 0; return StringUtils.countMatches(inputString.toLowerCase(), findText.toLowerCase()); }
- CVTE笔试编程笔记
- 2016 CVTE 笔试编程题
- 2016CVTE春招笔试编程题
- CVTE 2018 Android在线笔试编程题
- CVTE笔试
- [面经]CVTE的两道笔试编程题
- [面经]CVTE的两道笔试编程题
- 记录2017/9/7CVTE嵌入式软件笔试编程题
- CVTE笔试题
- CVTE笔试题
- CVTE笔试题
- CVTE笔试相关
- cvte笔试总结
- CVTE水果笔试题
- CVTE线上笔试总结
- cvte-c++-笔试1
- cvte-c++-笔试2
- 记cvte前端笔试
- Android之自定义控件实现天气温度折线图和饼状图
- 试题
- 交通灯
- 线程并行与并发的区别
- Linux与Unix之间的关系以及Linux的发展
- CVTE笔试编程笔记
- CSS3 box-shadow
- Java编译过程
- java 面试题基础
- Android技术堆栈积累
- Android系统Handler消息处理机制(一)
- 任何一个函数中都有预定义的局部变量__func__
- [POJ3233]Matrix Power Series 分治+矩阵
- 搭建单机RocketMQ实践