首页 > 58-31号笔试
头像
1_Jay
编辑于 2020-08-31 21:53
+ 关注

58-31号笔试

第一次写笔试反馈,终于能过一回笔试了,前几次笔试被虐惨了

第一题,求k个链表***有的单词,用的是set,但是只有20%正确,不知道原因
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;

public class Main15 {


		/**
		 *
		 * @param values string字符串ArrayList<ArrayList<>>
		 * @return string字符串ArrayList
		 */
		
		// 20%,不知道什么情况没考虑到
		public ArrayList<String> findCommonString (ArrayList<ArrayList<String>> values) {
			// write code here
			int group = values.size();
			HashSet<String> strSet = new HashSet<String>();
			// values.get(0).iterator((Iterator<String> iterator )->{strSet.add(iterator.next())});
			int size1=values.get(0).size();
			for (int i = 0; i < size1; i++) {
				strSet.add(values.get(0).get(i));
			}
			HashSet<String> strSet2 = new HashSet<String>();
			for (int i = 1; i < group; i++) {
				ArrayList<String> curr = values.get(i);
				for (int j = 0; j < curr.size(); j++) {
					if (strSet.contains(curr.get(j))){
						strSet2.add(curr.get(j));
					}
				}
				strSet.clear();
				strSet=null;
				strSet=strSet2;
				strSet2.clear();
			}
			ArrayList<String> res = new ArrayList<String>();
			Iterator<String> iterator = strSet.iterator();
			while (iterator.hasNext()){
				res.add(iterator.next());
			}

			return res;
		}
}

第二题,a+k和b+k都是完全平方数,求k(k<500),直接暴力法做的
public class Main16 {
	public static void main(String[] args) {

	}

	public int question (int a, int b) {
		// write code here
		int k=1;
		while (true){
			if (k>500){
				break;
			}
			if (func(a+k)&&func(b+k))
				return k;
			k++;
		}
//		if (k>500) // 题目描述不清,没有值也没说怎么返回,难道肯定能找到?
			return -1;

	}
	public static boolean func(int a){
		if ((int)Math.sqrt(a)==(int)a/Math.sqrt(a)){
			return true;
		}
		return false;
	}
}




第三题,
把数字转成有字母有什么种可能性?说明:0是a,25是z。如1,2可以表示为ab,也可以表示为m
动态规划
import java.util.Scanner;

public class Main14 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int input = scanner.nextInt();
		String str=""+input;
		int len = str.length();
		int[] dp = new int[len];
		dp[0]=1;
		dp[1]=func(str.substring(0,2))?2:1;
		for (int i = 2; i < len; i++) {
			if (func(str.substring(i-1,i+1))){
				dp[i]=dp[i-1]+dp[i-2];
			}else {
				dp[i]=dp[i-1];
			}
		}
		System.out.println(dp[len-1]);


	}
	public static boolean func(String substr){
		int twobitint=(substr.charAt(0)-'0')*10+(substr.charAt(1)-'0');
		if (twobitint>=10 && twobitint<=25){
			return true;
		}
		return false;
	}
}


全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐