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());
        }
    }
}
 

猜你喜欢

转载自www.cnblogs.com/sykline/p/12374944.html