今晚的模拟笔试编程题(JAVA卷)

第一道题:求重复数字

import java.util.Scanner;

public class Main {
    public static Boolean process(String str, int n) {
        if (n == 1) {
            return true;
        }
        int p1 = 0;
        int p2 = n / 2 + 1;
        while (p2 < n + 1) {
            if (str.charAt(p1++) != str.charAt(p2++)) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int n  = str.length() -1 ;
        while (--n > 0) {
            if (n % 2 != 0) {
                if (process(str, n) == true) {
                    System.out.println(n + 1);
                    break;
                }
            }
        }
    }
}

第二道题 求最多的回文串数目

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            if (map.containsKey(str.charAt(i))) {
                map.put(str.charAt(i), map.get(str.charAt(i)) + 1);
            } else {
                map.put(str.charAt(i), 1);
            }
        }
        int count = 0;
        Boolean hasEven = false;
        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            if (entry.getValue() % 2 != 0) {
                count++;
            } else {
                hasEven = true;
            }
        }
        if (hasEven == true && count == 1) {
            System.out.println(1);         
        } else {
            System.out.println(count);
        }
    }
}

第三道一直想打表,无奈没时间找出规律,只过了20%,求各路大神指导。

#笔试题目##Java#
全部评论
第三题同20%,估计是超时间了
点赞 回复
分享
发布于 2019-06-19 20:44
#include <iostream> #include <vector> using namespace std; int main(){     int n;     cin>>n;     long long ans = 1;     int mod = (int)1e9+7;     vector<bool> visited(n+1,false);     for(int i = 2;i<=n;i++){         if(visited[i]) continue;         int cnt = 1;         for(int j = i;j<=n;j*=i){             cnt++;         }         for(int j = i;j<=n;j+=i){             visited[j] = true;         }         ans=ans*cnt%mod;     }     cout<<ans<<endl; } 第三题,不知道对不对,考试后才想出来
点赞 回复
分享
发布于 2019-06-19 20:56
英特尔
校招火热招聘中
官网直投
同过了20%
点赞 回复
分享
发布于 2019-06-19 20:47
点赞 回复
分享
发布于 2019-06-19 20:49
都是大佬啊,只过了第一道。😂
点赞 回复
分享
发布于 2019-06-19 20:49
第三题求思路
点赞 回复
分享
发布于 2019-06-19 21:15
我觉得第三题得自底向上求吧 n位数的值 = n-1位数的值x2 - 不允许出现的那些情况,虽然我没做出来。。
点赞 回复
分享
发布于 2019-06-19 21:21
不好意思了,打表可能打错了
点赞 回复
分享
发布于 2019-06-19 21:24
回文那道题的hasEven想问下是代表什么,19行开始的代码不太理解了,想请教下思路,我也是把字母都存了map,但后面怎么计算就不太懂了
点赞 回复
分享
发布于 2019-06-19 21:25

相关推荐

点赞 10 评论
分享
牛客网
牛客企业服务