Java面向对象编程(45)

简介: Java面向对象编程(45)

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);
    }
}
相关文章
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
38 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
46 5
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
5月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
36 3
|
5月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
148 57
|
3月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
19 0
【前端学java】面向对象编程基础-类的使用(4)
|
3月前
|
Java 程序员 开发者
Java的面向对象编程:从基础到深入
【8月更文挑战第21天】在本文中,我们将探讨Java的面向对象编程(OOP)的核心概念,包括类、对象、继承、多态和封装。我们将通过实例和比喻,以通俗易懂的方式,深入理解这些概念的内涵和意义,以及它们如何影响我们的编程思维和实践。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更深入地理解Java的OOP,并启发你思考如何在你的项目中应用这些概念。
|
4月前
|
Java API 项目管理
Java中的函数式编程与传统面向对象编程对比
Java中的函数式编程与传统面向对象编程对比
|
5月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
59 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
5月前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
58 7