• LeetCode242 有效的字母异位词(Java字符数组排序&自定义排序记录)


    题目:
    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
     
    示例 1:
    输入: s = "anagram", t = "nagaram"
    输出: true
     
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/valid-anagram
    思路:
    将字符串中的字母按某种顺序排序,然后比较即可。
     
    字符串比较:
    String的equals方法是经过重写后的,利用该方法直接比较两个String字符串时,是字符串的值进行比较的。
    如果是将String字符串通过Sting的toCharArray()方法转换成char数组后,再利用char数组的equals进行比较时,实际上参与比较的是两个char数组的地址。如果是想让char数组的内容进行比较的话,需要用Arrays.equals(str1,str2)进行比较。
    代码:
    import java.util.*;
    import java.math.*;
    
    
    class Solution {
        public boolean isAnagram(String s, String t) {
            char[] ss = s.toCharArray();
            char[] tt = t.toCharArray();
            Arrays.sort(ss);
            Arrays.sort(tt);
            return Arrays.equals(ss, tt);
        }
    }
    
    
    
    public class Main {
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            Solution solution = new Solution();
            String s = scanner.nextLine();
            String t = scanner.nextLine();
            System.out.println(solution.isAnagram(s, t));
        }
    }
    要实现自定义排序,有两种方法
    1.实现comparator接口,并重写compare方法
    代码:
    import java.util.*;
    import java.math.*;
    
    class MySort implements Comparator<Integer>{
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2.compareTo(o1);
        }
    }
    
    
    public class Main {
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            int n = scanner.nextInt();
            Integer[] a = new Integer[n];
            for(int i=0; i<n; i++){
                a[i] = scanner.nextInt();
            }
            Arrays.sort(a,new MySort());
            for(int i=0; i<a.length; i++){
                System.out.println(a[i]);
            }
    
        }
    }

    2.实现类的自定义排序,需要实现comparable接口并重写compareTo方法

    代码:

    import javax.swing.text.html.parser.TagElement;
    import java.util.*;
    import java.math.*;
    
    class Student implements Comparable{
        private int id;
        private int age;
        private String name;
    
        public Student(String name, int id, int age){
            this.age = age;
            this.id = id;
            this.name = name;
        }
        public int getId(){
            return id;
        }
        public int getAge(){
            return age;
        }
        public String getName(){
            return name;
        }
    
        @Override
        public int compareTo(Object o) {//按id降序排列
            Student s = (Student) o;
            if(this.id >= s.getId()){
                return -1;
            }else{
                return 1;
            }
        }
    
        @Override
        public String toString() {
            return "name: "+name+" age: "+age+" id: "+id;
        }
    }
    
    public class Main {
        public static void main(String[] args){
            Scanner scanner = new Scanner(System.in);
            int n = scanner.nextInt();
            int id,age;
            String name;
            List<Student> list = new ArrayList<>();
            for(int i=0; i<n; i++){
                name = scanner.nextLine();
                scanner.next();//吃掉回车
                id = scanner.nextInt();
                age = scanner.nextInt();
                list.add(new Student(name,id,age));
            }
            Collections.sort(list);
            for(int i=0; i<n; i++){
                System.out.println(list.get(i).toString());
            }
        }
    }
     
  • 相关阅读:
    THUWC2020 游记
    USACO14MAR The Lazy Cow(Gold)
    luogu P3768 简单的数学题
    2017/9/22模拟赛
    2017/9/20模拟赛
    2017/9/15模拟赛
    刷屏代码·稳 from林凯
    2017/9/13模拟赛
    【9018:1368】八数码
    2017/9/10模拟赛
  • 原文地址:https://www.cnblogs.com/sykline/p/12374944.html
Copyright © 2020-2023  润新知