Java面向对象编程(20)

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

对于顺序存储的线性表,访问结点和增加结点的时间复杂度为()。

A. O(n) O(n)

B. O(n) O(1)

C. O(1) O(n)

D. O(1) O(1)

答案:C

若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是( )。

A. top[1]+top[2]=m

B. top[1]+1=top[2]

C. top[2]-top[1]|=0

D. top[1]=top[2]

答案:B

下述有关栈和队列的区别,说法错误的是?

A. 栈是限定只能在表的一端进行插入和删除操作。

B. 队列是限定只能在表的一端进行插入和在另一端进行删除操作。

C. 栈和队列都属于线性表

D. 栈的插入操作时间复杂度都是o(1),队列的插入操作时间复杂度是o(n)

答案:D

从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座 山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是……描述的是()

A. 贪心

B. 回溯

C. 穷举

D. 分治

E. 递归

答案:E

某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为() A. 不存在这样的二叉树

B. 200

C. 198

D. 199

答案:B

某二叉树的前序遍历序列与中序遍历序列相同,均为 ABCDEF ,则按层次输出(同一层从左到右)的序列为( )

A. ABCDEF

B. BCDEFA

C. FEDCBA

D. DEFABC

答案:A

初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为()

A. 8 3 2 5 1 6 4 7

B. 3 2 8 5 1 4 6 7

C. 3 8 2 5 1 6 7 4

D. 8 2 3 5 1 4 7 6

答案:A

解决散列法中出现冲突问题常采用的方法是()

A. 数字分析法、除余法、平方取中法

B. 数字分析法、除余法、线性探测法

C. 数字分析法、线性探测法、多重散列法

D. 线性探测法、多重散列法、链地址法

答案:D

以下哪种排序算法对(1,3,2,4,5,6,7,8,9)进行的排序最快()

A. 冒泡

B. 快排

C. 归并

D. 堆排

答案:A

以下数据结构中,()是非线性数据结构

A. 树

B. 字符串

C. 队

D. 栈

答案:A

字符串反转

题目描述:接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

输入描述:输入一行,为一个只包含小写字母的字符串。

输出描述:输出该字符串反转后的字符串。

输入:abcd

输出:dcba

方法1


public class Main33 {
    //字符串反转
    public static void main(String[] args) throws Exception{
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String str;
        //循环输入(多组输入)
        while ((str=reader.readLine()) !=null){
            //逆转 首尾元素交换
            char[] arr=str.toCharArray();
            int start=0;
            int end=arr.length-1;
            while (start <end){
                char tmp=arr[start];
                arr[start]=arr[end];
                arr[end]=tmp;
                start++;
                end--;
            }
            System.out.println(arr);
        }
    }
}

方法2


public class Main30 {
    //字符串翻转
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str=scanner.nextLine();
        //翻转
        //栈
        Stack<Character> stack=new Stack<>();
        for (int i = 0; i < str.length(); i++) {
            stack.push(str.charAt(i));
        }
        StringBuilder stringBuilder=new StringBuilder();
        while ( !stack.isEmpty()){
            stringBuilder.append(stack.pop());
        }
        System.out.println(stringBuilder.toString());
    }
}

公共字串计算

题目描述:给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。

注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。

数据范围:字符串长度:1<=len<=150

进阶:时间复杂度:O(n^3) ,空间复杂度:O(N)

输入描述:输入两个只包含小写字母的字符串

输出描述:输出一个整数,代表最大公共子串的长度 补充说明: 示例 展开 示例1

public class Main32 {
    //公共字串计算
    public static int getMaxLen(String str1,String str2){
        char[] arr1=str1.toCharArray();
        char[] arr2=str2.toCharArray();
        int len1=arr1.length;
        int len2=arr2.length;
        int[][] maxSubLen=new int[len1+1][len2+1];
        int maxLen=0;
        for (int i = 1; i <= len1; ++i) {
            for (int j = 1; j <= len2 ; ++j) {
                if (arr1[i-1] ==arr2[j-1]){
                    //F(i,j) = F(i-1,j-1)+1
                    maxSubLen[i][j]=maxSubLen[i-1][j-1]+1;
                    //是否需要更新最大值
                    if (maxLen<maxSubLen[i-1][j-1]){
                        maxLen=maxSubLen[i][j];
                    }
                }
            }
        }
        return maxLen;
    }
    public static void main(String[] args) throws Exception{
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String str1;
        String str2;
        while ((str1 =reader.readLine()) !=null){
            str2=reader.readLine();
            System.out.println(getMaxLen(str1,str2));
        }
    }
}
相关文章
|
6天前
|
设计模式 安全 Java
面向对象编程的精髓:Java设计模式 - 原型模式(Prototype)完全参考手册
【4月更文挑战第7天】原型模式是OOP中的创建型设计模式,用于通过复制现有实例创建新实例,尤其适用于创建成本高或依赖其他对象的情况。它包括Prototype接口、ConcretePrototype实现和Client客户端角色。优点是性能优化、避免子类化和动态增加产品族。实现包括定义原型接口、实现具体原型和客户端调用克隆方法。最佳实践涉及确保克隆正确性、选择深拷贝或浅拷贝及考虑线程安全。但需注意克隆方法管理、性能开销和循环引用等问题。在Java中,实现Cloneable接口和覆盖clone方法可实现原型模式。
|
6天前
|
安全 Java 数据安全/隐私保护
|
6天前
|
Java
04|零基础玩转面向对象编程:Java OOP
04|零基础玩转面向对象编程:Java OOP
7 0
|
6天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
6天前
|
存储 Java 程序员
Java面向对象编程的基础概念解析
Java面向对象编程的基础概念解析
17 0
|
6天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
31 1
|
6天前
|
Java
Java从入门到精通:1.1.2深入理解Java的面向对象编程概念
Java从入门到精通:1.1.2深入理解Java的面向对象编程概念
|
6天前
|
Java Scala C#
Java 17 新特性揭秘:密封类的华丽登场,面向对象编程再进化
Java 17 新特性揭秘:密封类的华丽登场,面向对象编程再进化
28 0
|
6天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
95 3
|
6天前
|
Java
Java面向对象编程
Java面向对象编程