刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

导读:本篇文章讲解 刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1. 组队竞赛(编程)

2. 删除公共字符(编程)

3. toLowerCase的比较

4.  实例为null + 静态方法引用

5. 子类继承父类,构造方法的执行

6. static不能定义为局部变量

7. 抽象方法不能有具体实现

8.Constructor是构造方法

9. 排序子序列(编程)

10.倒置字符串(编程)


1. 组队竞赛(编程)

题目链接:组队竞赛_牛客笔试题_牛客网 (nowcoder.com)

题目要求:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

题目分析:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

上代码

import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()) {
            int n = scan.nextInt();
        int[] array = new int[3*n];
        long sum = 0;
        for(int i = 0; i < array.length; i++) {
            array[i] = scan.nextInt();
        }
        
        Arrays.sort(array);
        for(int i = 0; i < n; i++) {
            sum += array[array.length - 2*(i+1)];
        }
        System.out.print(sum);
        }
        
    }
}

2. 删除公共字符(编程)

题目链接:删除公共字符_牛客题霸_牛客网 (nowcoder.com)

题目要求:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

题目分析:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

上代码

import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str1 = scan.nextLine();
        String str2 = scan.nextLine();

        HashMap<Character,Integer> map = new HashMap<>();
        //1. 将 str2 放入 map 中
        for(int i = 0; i < str2.length(); i++) {
            //区分 str2 中有无重复的字符
            if(map.get(str2.charAt(i)) == null) {
                  map.put(str2.charAt(i),1);
            } else {
                //已经有这个字符了,+1
                map.put(str2.charAt(i),map.get(str2.charAt(i))+1);
            } 
        } 
        String ret = "";
        //2. 将 str1遍历 和 map 的 value 进行比较为0就输出
        for(int i = 0; i < str1.length(); i++) {
            if(map.get(str1.charAt(i)) == null) {
                ret += str1.charAt(i);
            }
        } 
        System.out.print(ret);

    }
}

3. toLowerCase的比较

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

 看一下这个例子,如果要用toLowerCase转为小写的字符串中有大写,那是直接new一个对象进行修改,而不是在原来的字符串上进行修改,而原来的字符串还在常量池中,所以修改后的新字符串和之前在常量池中的字符串比较,肯定是false(比较的是地址)

我当时做的时候,想的是toLowerCase大写转小写,转完之后两个肯定相等所以我直接选的是true,却忘了这里比较的是地址,当时看的还是片面了

查询一番后

(1)  == 

在基本数据类型中,比较的是两个值的内容是否相等

在引用类型中,比较的是两个对象的地址是否相等

(2)equals()是Object类中的方法

基本数据类型是无法使用equals()方法的

而引用类型中,直接使用Object中的equals()方法,仍然是直接用 == 比较两个对象的内存地址

如果是重写equals方法,那么调用子类重写后的方法可以进行内容或值的比较

String类中就重写了equals方法,比较的是内容

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

4.  实例为null + 静态方法引用

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

 看代码题还是要仔细啊,之前做时,我刚看见 test 实例对象却为null,然后test就引用了hello()方法,那肯定是错误的啊,想都没想直接选了C,

现在看来,C中都提到了静态方法,那肯定是不要对象啊,当时还是不仔细

静态方法不要对象就能调用!!!

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

5. 子类继承父类,构造方法的执行

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

 这道题需要知道子类继承父类,子类new自己后,会默认执行子类和父类的构造方法

我当时做的时候,忘了这一点,只看见了 new 父类,执行一次Base,所以选A错了

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

6. static不能定义为局部变量

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

 这道题的重点是 static修饰成员变量后,就变为了类变量,是不能放在方法内部的

而我当时做这道题,却将重点放在了 j 应该等于几的问题上,当时不仔细自动忽略了static

而且关键是我还选了 j = 2,现在看来,就算去掉static,那么 最后也应该输出的是 j = 1·

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

7. 抽象方法不能有具体实现

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

 abstract可以修饰方法、修饰类,但就是不能修饰字段

抽象方法不能有具体实现,也就是后面不能带{}  ,必须写 ;

8.Constructor是构造方法

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

当时看到这个题我都傻了 constructor 是啥啊,然后我随便选了一个

后面查询后才知道,constructor就是构造方法啊!!!,之前学的是啥,这都能忘了

在类中构造方法可以省略,A错

构造方法和类同名,而且构造方法也是方法和类同名,B错

类中可以写多个构造方法,D错

构造方法就是在对象new时执行的,选C

9. 排序子序列(编程)

题目链接:排序子序列_牛客笔试题_牛客网 (nowcoder.com)

题目要求:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

题目分析:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

上代码

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        //1.输入n 和数组A
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] array = new int[n + 1];
        for (int i = 0; i < array.length-1; i++) {
            array[i] = sc.nextInt();
        }
        int i = 0;
        int count = 0;
        //2.比较 找出 (非递减 非递增)
        while(i < n) {
            if(array[i] < array[i+1]) {
                while(i < n && array[i] < array[i+1]) {
                    i++;
                }
                count++;
                i++;
            }else if(array[i] == array[i+1]) {
                while(i < n && array[i] == array[i+1]) {
                    i++;
                }
            }else {
                while(i < n && array[i] > array[i+1]) {
                    i++;
                }
                count++;
                i++;
            }
        }
        System.out.println(count);
    }
}

10.倒置字符串(编程)

题目链接:倒置字符串_牛客题霸_牛客网 (nowcoder.com)

题目要求:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)

题目分析:

刷题笔记之一(组队竞赛+删除公共字符+排序子序列+倒置字符串)  

上代码

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();

        //1.整体转为数组,进行逆置
        char[] array = str.toCharArray();
        int len = array.length;
        reverse(array,0,len-1);

        //2.将每个单词进行逆置
        int i = 0;
        while(i < len) {
            int j = i;
            while(j < len && array[j] != ' ') {
                j++;
            }
            //走到这里,j就走到了第一个单词空格这里
            //只要j还没超出len,就进行交换
            if(j < len) {
                reverse(array,i,j-1);
                // j此时在单词空格位置,而i要走到下一个单词的第一个字母位置
                i = j+1;
            }else {
                //此时i走到最后一个单词位置
                reverse(array,i,j-1);
                i = j;
            }
        }
        String str1 = new String(array);
        System.out.println(str1);
    }

    private static void reverse(char[] array, int start, int end) {
        while(start < end) {
            char tmp = array[start];
            array[start] = array[end];
            array[end] = tmp;
            start++;
            end--;
        }
    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/87323.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!