牛客杂记——(黑盒测试方法、白盒测试方法、软件生命周期、买苹果、删除公共字符。。。。)

基础知识

1、先到先服务的作业调度与队列结构有关,队列的修改是依先进先出的原则进行的。
2、黑盒测试方法
1)、等价类划分方法
2)、边界值分析方法
3)、错误推测方法
4)、因果图方法
5)、判定表驱动分析方法
6)、正交实验设计方法
7)、功能图分析方法
8)、场景设计方法
3、白盒测试方法
1)有代码检查法、
2)静态结构分析法、
3)静态质量度量法、
4)逻辑覆盖法、
5)基本路径测试法、
6)域测试、
7)符号测试、
8)路径覆盖和程序变异
4、计算机存储信息的最小单位,称之为位( bit ,又称比特),存储器中所包含存储单元的数量称为存储容量,其计量基本单位是字节( Byte ,简称 B ), 8 个二进制位称为 1 个字节,此外还有 KB 、 MB 、 GB 、 TB 等。 MIPS 即 Million Instruction Per Second 的简写--计算机每秒钟执行的百万指令数,是衡量计算
机速度的指标。

5、算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
6、java语言的数组复制方法,System.arraycopy
效率最高

7、软件生命周期分为 3 个阶段:软件定义阶段,任务是确定软件开发工作必须完成的目标,确定工程的可行性;
软件开发阶段,任务是具体完成设计和实现定义阶
段所定义的软件,通常包括总体设计、详细设计、编码和测试;
软件维护阶段,任务是使软件在运行中持久地满足用户的需要。需求分析属于软件定义阶段的任
务。
8、Socket通信编程
1)服务器端通过new ServerSocket()创建TCP连接对象
2)服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象
3)客户端通过new Socket()方法创建通信的Socket对象

编程

买苹果

链接:https://www.nowcoder.com/questionTerminal/61cfbb2e62104bc8aa3da5d44d38a6ef

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想
购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。
在这里插入图片描述
【解题思路】:
对数字特征进行分析。
首先,6和8都是偶数。因此,能凑出的个数也一定是偶数。程序中若苹果总数是奇数,可以直接返回-1。
再次,偶数个苹果数对8取模,其结果只可能为0,2,4,6。若余数为6或者0,则可以直接用6包装情况处理,不
需要回溯购买8包装的情况。若余数为4,只需回溯1次即可,因为8+4=12, 12%6 = 0。若余数为2,只需回溯
2次即可,因为8+8+2=18, 18%6 = 0。
综上,可以采用如下思路进行处理。(由于数字6和8的特征,本方法只适用于本题)
情况1:若num不是偶数,则直接返回-1
情况2:若num%8 = 0,则返回num/8
情况3:若num%8 != 0,则只需回溯1次或者2次8包装购买个数,就可以求解。回溯1次,其结果为n/8-1+2
= n/8+1;回溯1次,其结果为n/8-2+3 = n/8+1。因此,可以情况3下,可以返回n/8+1。

import java.util.
*;
public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
System.out.println(count(n));
}
}
public static int count(int n){
//一定是偶数(6,8都是),最小是6,10以上偶数都可以;
if(n%2!=0||n==10||n<6)
return -1;
//如果拿八个拿完最好
if(n%8==0)
return n/8;
//对于10以上的偶数,只要对8取余数不为0,就要从前面的1或者2个8中拿出2个,把余数补为6(本来余
数就是6,就不用拿)。所以+1return 1+n/8;
}
}

删除公共字符

链接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae44ac90b90c6212

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
测试样例:
【解题思路】:
最简单的思路就是两层循环遍历,下面将“They are students.”称为字符串1,将“aeiou”称为字符串2。每遍
历到字符串2中的一个字符,就在字符串1中找到相同的字符,找到之后删除它,并将字符串1后面的字符整
体向前移动1位。
在这里插入图片描述

 public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            char[] ch = sc.nextLine().toCharArray();
            String str = sc.nextLine();
            for(int i=0;i<ch.length;i++){
                if(!str.contains(String.valueOf(ch[i]))){
                    System.out.print(ch[i]);
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/char_m/article/details/106755398