Java面向对象编程

发布于:2023-09-22 ⋅ 阅读:(106) ⋅ 点赞:(0)

IP地址205.140.36.68的哪一部分表示网络号()

A. 205

B. 205.140

C. 68

D. 205.140.36

答案:D

IP数据报分片的重组通常发生在()

A. 源主机和数据报经过的路由器上

B. 源主机上

C. 数据报经过的路由器上

D. 目的主机上

答案:D

以下不属于tcp连接断开的状态是()

A. TIME_WAIT

B. FIN_WAIT_1

C. SYNC_SENT

D. FIN_WAIT_2

答案:C

ip地址10.1.8.0/24和10.1.9.0/24,下列哪个是正确的汇总网段()

A. 10.0.0.0/8

B. 10.1.0.0/16

C. 10.1.8.0/23

D. 10.1.10.0/24

答案:C

属于网络112.10.200.0/21的地址是()

A. 112.10.206.0

B. 112.10.217.0

C. 112.10.224.0

D. 112.10.198.0

答案:A

下列TCP连接建立过程描述正确的是()

A. 服务端收到客户端的SYN包后等待2*ml时间后就会进入SYN_SENT状态

B. 服务端收到客户端的ACK包后会进入SYN_RCVD状态

C. 当客户端处于ESTABLISHED状态时,服务端可能仍然处于SYN_RCVD状态

D. 服务端未收到客户端确认包,等待2*ml时间后会直接关闭连接

答案:C

TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为()

A. 1999,999

B. 1999,1000

C. 999,2000

D. 999,1999

答案:B

应用程序PING发出的是什么报文()

A. TCP 请求报文

B. TCP 应答报文

C. ICMP 请求报文

D. ICMP 应答报文

答案:C

HTTP协议中,如果要告知所请求的网页已经永久跳转到了另一个地址,应该返回哪个状态码()

A. 301

B. 302

C. 404

D. 503

答案:A

在因特网中,下列哪个不是IP层所需解决的问题()

A. 流量控制

B. 路径选择

C. 寻址

D. 分段和重新组装

答案:A

乒乓球筐 
题目描述:nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该 怎么办呢? 
输入描述:输入有多组数据。 
每组数据包含两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母。 
字符串长度不大于10000。 
输出描述:每一组输入对应一行输出:如果B盒中所有球的类型在A中都有,并且每种球的数量都不大于A,则输出“Yes”;否则输出“No”。

 

 

public class Main74 {

    //乒乓球筐

    public static void main(String[] args) {

        String strA;

        String strB;

        Scanner scanner=new Scanner(System.in);

        while (scanner.hasNextLine()){

            String[] strArr= scanner.nextLine().split(" ");

            strA=strArr[0];

            strB=strArr[1];

            char[] arrA=strA.toCharArray();

            char[] arrB=strB.toCharArray();

            HashMap<Character,Integer> mapA=new HashMap<>();

            HashMap<Character,Integer> mapB=new HashMap<>();

            //统计字符出现的次数

            for (char ch:arrA) {

                if (mapA.containsKey(ch)){

                    mapA.put(ch,mapA.get(ch)+1);

                }else {

                    mapA.put(ch,1);

                }

            }



            for (char ch:arrB) {

                if (mapB.containsKey(ch)){

                    mapB.put(ch,mapB.get(ch)+1);

                }else {

                    mapB.put(ch,1);

                }

            }

            boolean ret=true;

            //遍历字符串B

            for (char ch: arrB) {

                if ( !mapA.containsKey(ch) || mapA.get(ch) <mapB.get(ch)){

                    ret=false;

                    break;

                }

            }


            if (ret){

                System.out.println("Yes");

            }else {

                System.out.println("No");

            }



        }

    }

}
查找兄弟单词
题目描述:定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。 
兄弟单词要求和原来的单词不同。例如: ab 和 ba 是兄弟单词。 ab 和 ab 则不是兄弟单词。 
现在给定你 n 个单词,另外再给你一个单词 x ,让你寻找 x 的兄弟单词里,按字典序排列后的第 k 个单词是什么? 
注意:字典中可能有重复单词。 
数据范围:1<=n<=1000,输入的字符串长度满足1<=len(str)<=10,1<k<n 
输入描述:输入只有一行。 先输入字典中单词的个数n,再输入n个单词作为字典单词。 然后输入一个单词x 最后后输入一个整数k 
输出描述:第一行输出查找到x的兄弟单词的个数m 第二行输出查找到的按照字典顺序排序后的第k个兄弟单词,没有符合第k个的话则不用输出。

public class Main75 {

    //查找兄弟单词

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        while (scanner.hasNextLine()){

            String[] str= scanner.nextLine().split(" ");

            int n=Integer.parseInt(str[0]);

            String[] arr=new String[n];

            for (int i = 0; i < n; ++i) {

                arr[i]=str[i+1];

            }

            //单词x

            String curStr=str[n+1];

            int k=Integer.parseInt(str[n+2]);

            //给数组进行排序

            Arrays.sort(arr);

            int count=0;

            String kStr="";

            for (String e:arr) {

                if (isBrother(e.toCharArray(),curStr.toCharArray())){

                    count++;

                    //判断是否为第K个兄弟单词

                    if(count==k){

                        kStr=e;

                    }

                }

            }

            System.out.println(count);

            if (count>=k){

                System.out.println(kStr);

            }

        }

    }



    public static boolean isBrother(char[] str1,char[] str2){

        //长度相同

        if (str1.length !=str2.length){

            return false;

        }

        //内容不同

        String strA=new String(str1);

        String strB=new String(str2);

        if (strA.equals(strB)){

            return false;

        }

        //排序之后,内容相同

        Arrays.sort(str1);

        Arrays.sort(str2);

        strA=new String(str1);

        strB=new String(str2);

        return strA.equals(strB);

    }

}
本文含有隐藏内容,请 开通VIP 后查看