题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
输出: true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram
链接: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()); } } }