刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

这篇具有很好参考价值的文章主要介绍了刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 数据库中,count不会返回null值,max和concat可能会返回null值

2. 数据库特点: 共享性高,冗余度小,安全性强,独立性强

3.  top是sql server中的关键字,用于求前n条数据

4. 数据库使用函数进行全部扫描(数据遍历)最慢,并且函数执行本身也是需要耗时的

5.  使用%作为通配符时,匹配的是0个以上的字符(包含0)

6.  RDBS是关系型数据库,hadoop是大数据方向的数据库不是关系型数据库

7. 统计每个月兔子的总数

8. 查找两个字符串a,b中的最长公共子串

9. 汽水瓶

10. 二叉树中只有完全二叉树可以使用顺序表存储

11. 递归函数的出口就是,用一个分支不调用自身,直接return

12.  已知二叉树后续遍历序列是bfegcda,中序遍历序列是badefcg,它的前序遍历序列是: B.abdcefg

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

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

15. 公共子串计算


1. 数据库中,count不会返回null值,max和concat可能会返回null值

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

(1)count(*)一定可以返回数值,如果t1中没有数据,返回0

(2)max返回null 有两种可能情况:(1)t1中没有数据    (2)coll字段,全都是null

(3)concat():字符串拼接的函数(数据库中,字符串不能使用+拼接)

如果拼接的其中一个字符串是null,结果就是null

所以答案选D


2. 数据库特点: 共享性高,冗余度小,安全性强,独立性强

 刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 数据库管理系统的特点:

共享性高,冗余度小(通过关联,就可以共享;逻辑和物理上,独立性高);

具有高度的物理独立性和逻辑独立性;

整体结构化,用数据模型描述;

由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力。


3.  top是sql server中的关键字,用于求前n条数据

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 top,是sql server中的关键字,用于求前n条数据(如果查从m到n条,要写子查询)

语法:select top n 查询字段 from


4. 数据库使用函数进行全部扫描(数据遍历)最慢,并且函数执行本身也是需要耗时的

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

PhoneNo是数字组成(使用数值数据类型),和字符串可以比较,但是会进行类型转换(有点耗时)

like:模糊匹配,最开始xxx的匹配,可以使用索引

substr()使用函数,不会再使用索引,全部扫描(全部数据遍历),函数本身的执行,也是需要耗时的(最慢) 


5.  使用%作为通配符时,匹配的是0个以上的字符(包含0)

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)


6.  RDBS是关系型数据库,hadoop是大数据方向的数据库不是关系型数据库

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 RDBS是关系型数据库,hadoop是大数据方向的数据库,不是关系型数据库


7. 统计每个月兔子的总数

题目链接:统计每个月兔子的总数_牛客题霸_牛客网 (nowcoder.com)

题目要求:

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 题目分析:

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

上代码文章来源地址https://www.toymoban.com/news/detail-408719.html

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int d = scan.nextInt();

        int[] arr = new int[31];
        arr[0] = 1;
        arr[1] = 1;
        for (int i = 2; i < d; i++) {
            arr[i] = arr[i-2] + arr[i-1];
        }
        System.out.println(arr[d-1]);
    }
}

8. 查找两个字符串a,b中的最长公共子串

题目链接:查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网 (nowcoder.com)

题目要求:

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 题目分析:

这道题可以考虑使用动态规划来做,

因为动态规划是分治思想,也就是将问题化简,大问题化为小问题,先解决小问题,再用小问题的解推导出大问题的解

动态规划的特征也就是:

(1)把原来的问题分解为几个相似的子问题

(2)所有的子问题都只需要解决一次

(3)存储子问题的解

这道题的问题:两个字符串的最长公共子串

子问题:a的子串 和 b的子串 中最长公共子串

抽象子问题: a的前 i 个字符 和 b的前 j 个字符中,他们的最长公共子串

根据动态规划四步走分析:

(1)状态: a的前 i 个字符 和 b的前 j 个子符中最长公共子串的长度

如果要知道最长公共子串具体内容:长度,起始位置,结束位置

 F(i , j): 以a的第 i 个子符结尾的子串 和 以b的第 j 个子符结尾的子串 , 其最长公共子串的长度

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 (2)状态转移方程:

如果a的第i个字符和b的第j个字符相同 F(i,j) = F(i-1 , j-1)  + 1

不相同:0

(3)起始位置:i - maxLen:4-4 = 0 (maxLen最长公共子串长度)

(4)返回值:最长子串的内容

上代码

import java.io.*;
import java.util.*;


public class Main {
    private static String getMaxSubstr(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 start  = 0;
        //最长子串的长度
        int maxLen = 0;

        for(int i = 1; i <= len1; i++) {
            for(int j = 1; j <= len2; j++) {
                //如果第i个字符和第j个字符相等,则进行累加
                if(arr1[i-1] == arr2[j-1]) {
                     maxSubLen[i][j] =  maxSubLen[i-1][j-1] + 1;
                }
                //更新
                if( maxSubLen[i][j] > maxLen) {
                    maxLen = maxSubLen[i][j];
                    start = i - maxLen;
                }
            }
        }
        return str1.substring(start,start+maxLen);
    }
    
    public static void main (String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1;
        String str2;
        if((str1 = br.readLine()) != null) {
            str2 = br.readLine();
            if(str1.length() < str2.length()) {
                System.out.println(getMaxSubstr(str1,str2));
            }else {
                System.out.println(getMaxSubstr(str2,str1));
            }
        }
    }
}

9. 汽水瓶

题目链接:汽水瓶_牛客题霸_牛客网 (nowcoder.com)

题目要求:

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

 题目分析:

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

上代码

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    private static int getNum (int num) {
        //累加汽水的个数
        int sum = 0;
        while(num > 1) {
            sum += num/3;
            //空汽水瓶的个数
            num = num/3 + num%3;
            //特殊情况,空瓶剩余2
            if(num == 2) {
                sum++;
                break;
            }
        }
        return sum;
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()) {
            int num = scan.nextInt();
            if(num == 0) {
                break;
            }else {
                System.out.println(getNum(num));
            }
        }
    }
    
}

10. 二叉树中只有完全二叉树可以使用顺序表存储

下列数据结构中,不能采用顺序存储结构的是()

A.非完全二叉树      B. 堆      C. 队列        D. 栈

这道题选A ,

二叉树中只有完全二叉树可以使用顺序表存储,

而非完全二叉树只能采用链式存储(Node left, Node right)

堆的底层就是一颗完全二叉树,也就是顺序存储结构

队列和栈也可以采用顺序表也就是数组来存储


11. 递归函数的出口就是,用一个分支不调用自身,直接return

递归函数最终会结束,那么这个函数一定?

A.使用了局部变量                                                      B.有一个分支不调用自身   

C.使用了全局变量或者使用了一个或多个参数           D,没有循环调用

递归函数的终止条件.也就是递归函数的出口:函数调用过程中有一个分支直接return,不会一直调用下去,所以这个选B


12.  已知二叉树后续遍历序列是bfegcda,中序遍历序列是badefcg,它的前序遍历序列是: B.abdcefg

已知二叉树后续遍历序列是bfegcda,中序遍历序列是badefcg,它的前序遍历序列是:

A,abcdefg                B.abdcefg               C.adbcfeg                       D,abecdfg

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)


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

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

A O(n) O(n)         B O(n) O(1)          C O(1) O(n)          D O(1) O(1)

顺序存储的线性表,可以直接通过下标访问结点,所以时间复杂度O(1)

而增加结点最坏情况下,在数组头部增加结点,时间复杂度为O(n)选C


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

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)


15. 公共子串计算

题目链接:公共子串计算_牛客题霸_牛客网 (nowcoder.com)

题目要求:

刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)

题目分析:

这道题和前面第8题可以说是一样的

第8题是求两个字符串的最长公共子串(是求出最长公共子串的起始位置,和公共最长子串长度来算出末尾位置,进行字符串截取)

而这道题是求两个字符串的最长公共子串的长度(也就是直接求出最长子串的长度就可以了)

这里再写一遍动态规划四步走吧

(1)状态: 以第一个字符串第i个字符结尾和以第二个字符串第j个字符结尾的最大公共子串的长度

(2)状态转移方程:

第i个字符 != 第j个字符  F(i , j) = 0

第i个字符 == 第j个字符  F(i , j) = F(i-1 , j-1) +1

(3)初始状态:F(i,0) = F(0 , j):0

(4)返回值:max(F(i,j))

上代码

import java.util.Scanner;
import java.io.*;
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine();
        String str2 = br.readLine();
        if(str1.length() > str2.length()) {
            System.out.println(getMaxStr(str1,str2));
        } else {
            System.out.println(getMaxStr(str2,str1));
        }

    }
    private static int getMaxStr(String a, String b) {
        int aLen = a.length();
        int bLen = b.length();
        int[][] ab = new int[aLen+1][bLen+1];
        int maxLen = 0;//记录最长子串长度
        for(int i = 1; i <= aLen; i++) {
            for(int j = 1; j <= bLen; j++) {
                if(a.charAt(i-1) == b.charAt(j-1)) {
                    //状态转移方程
                    ab[i][j] = ab[i-1][j-1] + 1;
                }
                //更新长度
                if(ab[i][j] > maxLen) {
                    maxLen = ab[i][j];
                }
            }
        }
        return maxLen;
    }
}

到了这里,关于刷题笔记之七(统计每个月兔子的总数+汽水瓶+查找两个字符串a,b中的最长公共子串+公共子串计算)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

    Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等 汇总统计方法 找到汇总统计的方法。这些方法属于java 8的汇总统计类。 getAverage(): 它返回所有接受值的平均值。 getCount():

    2023年04月20日
    浏览(66)
  • 10 | Spark 查找每个单词的最大行号

    假设你有一个包含文本行号和文本内容的RDD,现在你想找出每个单词出现在哪些行,并计算它们出现的最大行号。 需求是从包含文本行号和文本内容的RDD中找出每个单词出现在哪些行,并计算它们出现的最大行号。 具体需求如下: 数据输入: 代码从一个包含文本行号和文本

    2024年02月09日
    浏览(40)
  • python统计每个单词出现的次数

    编程要求 请按照函数的注释,补充程序中缺失部分语句,按要求实现如下程序功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ word_frequency() 函数统计并以字典类型返回每个

    2024年02月11日
    浏览(46)
  • python3 统计redis中每个DB占用的内存大小

            在一些业务中,会使用多个DB来缓存不同类型的业务数据,有时候redis占用内存过高,造成服务异常。         redis可以通过dbsize命令来查看当前选择的DB的key的数量,有时候仅仅看key的数量可能还不能直观反映哪块业务数据占用内存多,redis也没有直接的命令可以

    2024年01月16日
    浏览(43)
  • 2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现?

    2023-06-13:统计高并发网站每个网页每天的 UV 数据,结合Redis你会如何实现? 答案2023-06-13: 如果统计 PV (页面浏览量)那非常好办,可以考虑为每个网页创建一个独立的 Redis 计数器,并将日期添加为键(key)的后缀。当网页收到请求时,对应的计数器将被递增。对于每天的

    2024年02月08日
    浏览(90)
  • 统计Mysql库中每个表的总行数,解决table_rows不准确问题

    1、拼接SQL 注意:GROUP_CONCAT()默认容量是1024,拼接sql会出现截断,设置的大一些。 执行: SET SESSION group_concat_max_len = 102400; 2.输出SQL 执行输出  

    2024年02月11日
    浏览(32)
  • LeedCode刷题---二分查找类问题

    顾得泉: 个人主页 个人专栏: 《Linux操作系统》  《C/C++》  《LeedCode刷题》 键盘敲烂,年薪百万! 题目链接: 二分查找        给定一个  n  个元素有序的(升序)整型数组  nums  和一个目标值  target   ,写一个函数搜索  nums  中的  target ,如果目标值存在返回

    2024年02月04日
    浏览(43)
  • 【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 下面通过WordCount,WordMean等几个例子讲解MapReduce的实际应用,编程环境都是以Hadoop MapReduce为基础 WordCount用于计算文件中每个单词出现的次数,非常适合采用MapReduce进行处理,处理单词计数问题的思路很简单,在 Map阶段处理每

    2024年02月16日
    浏览(48)
  • 哈希表:给定一组查找关键字(32,15,7,11,4,28,56,61,79),哈希表长为m=12,请按照除留余数法设计一个哈希函数,设每个记录的查找概率相等。

    慕课数据结构题目: 给定一组查找(32,15,7,11,4,28,56,61,79),哈希表长为m=12,请按照除留余数法设计一个哈希函数,设每个记录的查找概率相等。 (1)画出按照 线性探测 再散列处理冲突得到的哈希表(给出求解过程),并计算等概率情况下查找成功和查找失败时的平均

    2024年02月11日
    浏览(55)
  • 算法刷题营【Day1】:: 704.二分查找:二分法详谈与相关刷题

    本内容是笔者结合《代码随想录》总结所得,记录学习过程,分享知识! 目录: 1. 开篇例题:704. 二分查找 2. 题解参考(模板写法) - - 2.1 方法一:左闭右闭写法 - - 2.2 方法二:左闭右开写法 3. 模板解释:左闭右闭 - - 3.1 区间划定 - - 3.2 left 、right 移动问题 - - 3.3 循环条件

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包