题目:
给定两个字符串 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)进行比较。
代码:
  1. import java.util.*;
  2. import java.math.*;
  3.  
  4. class Solution {
  5. public boolean isAnagram(String s, String t) {
  6. char[] ss = s.toCharArray();
  7. char[] tt = t.toCharArray();
  8. Arrays.sort(ss);
  9. Arrays.sort(tt);
  10. return Arrays.equals(ss, tt);
  11. }
  12. }
  13.  
  14. public class Main {
  15. public static void main(String[] args){
  16. Scanner scanner = new Scanner(System.in);
  17. Solution solution = new Solution();
  18. String s = scanner.nextLine();
  19. String t = scanner.nextLine();
  20. System.out.println(solution.isAnagram(s, t));
  21. }
  22. }
要实现自定义排序,有两种方法
1.实现comparator接口,并重写compare方法
代码:
  1. import java.util.*;
  2. import java.math.*;
  3.  
  4. class MySort implements Comparator<Integer>{
  5. @Override
  6. public int compare(Integer o1, Integer o2) {
  7. return o2.compareTo(o1);
  8. }
  9. }
  10.  
  11. public class Main {
  12. public static void main(String[] args){
  13. Scanner scanner = new Scanner(System.in);
  14. int n = scanner.nextInt();
  15. Integer[] a = new Integer[n];
  16. for(int i=0; i<n; i++){
  17. a[i] = scanner.nextInt();
  18. }
  19. Arrays.sort(a,new MySort());
  20. for(int i=0; i<a.length; i++){
  21. System.out.println(a[i]);
  22. }
  23.  
  24. }
  25. }

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

代码:

  1. import javax.swing.text.html.parser.TagElement;
  2. import java.util.*;
  3. import java.math.*;
  4.  
  5. class Student implements Comparable{
  6. private int id;
  7. private int age;
  8. private String name;
  9.  
  10. public Student(String name, int id, int age){
  11. this.age = age;
  12. this.id = id;
  13. this.name = name;
  14. }
  15. public int getId(){
  16. return id;
  17. }
  18. public int getAge(){
  19. return age;
  20. }
  21. public String getName(){
  22. return name;
  23. }
  24.  
  25. @Override
  26. public int compareTo(Object o) {//按id降序排列
  27. Student s = (Student) o;
  28. if(this.id >= s.getId()){
  29. return -1;
  30. }else{
  31. return 1;
  32. }
  33. }
  34.  
  35. @Override
  36. public String toString() {
  37. return "name: "+name+" age: "+age+" id: "+id;
  38. }
  39. }
  40.  
  41. public class Main {
  42. public static void main(String[] args){
  43. Scanner scanner = new Scanner(System.in);
  44. int n = scanner.nextInt();
  45. int id,age;
  46. String name;
  47. List<Student> list = new ArrayList<>();
  48. for(int i=0; i<n; i++){
  49. name = scanner.nextLine();
  50. scanner.next();//吃掉回车
  51. id = scanner.nextInt();
  52. age = scanner.nextInt();
  53. list.add(new Student(name,id,age));
  54. }
  55. Collections.sort(list);
  56. for(int i=0; i<n; i++){
  57. System.out.println(list.get(i).toString());
  58. }
  59. }
  60. }
 

LeetCode242 有效的字母异位词(Java字符数组排序&自定义排序记录)的更多相关文章

  1. [Swift]LeetCode242. 有效的字母异位词 | Valid Anagram

    Given two strings s and t , write a function to determine if t is an anagram of s. Example 1: Input: ...

  2. leetcode.字符串.242有效的字母异位词-Java

    1. 具体题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注:判断两个字符串包含的字母是否完全一样. 示例 1: 输入: s = "anagram&q ...

  3. leetCode242 有效的字母异位词

    引言: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram&qu ...

  4. Java实现 LeetCode 242 有效的字母异位词

    242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = " ...

  5. leetcode-242有效字母异位词

    题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram&quo ...

  6. Java实现 LeetCode 438 找到字符串中所有字母异位词

    438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p ...

  7. Java实现 LeetCode 49 字母异位词分组

    49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", & ...

  8. LeetCode 242. 有效的字母异位词(Valid Anagram)

    242. 有效的字母异位词 LeetCode242. Valid Anagram 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s ...

  9. 242 Valid Anagram 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词.例如,s = "anagram",t = "nagaram",返回 true ...

随机推荐

  1. java判断字符串是否是数字

    正则表达式 代码如下: public static boolean isNum(String num){ return num.matches("(\\s)*([+-])?(([0-9]*\ ...

  2. Day11 - B - Dice (III) LightOJ - 1248

    设dp_i为已经出现了i面,需要的期望次数,dp_n=0 那么dp_i= i/n*dp_i + (n-i)/n*dp_(i+1) + 1 现在已经i面了,i/n的概率再选择一次i面,(n-i)/n的概 ...

  3. jsp遍历集合

    1.先引入JSTL库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> ...

  4. Mysql基本用法-01

    #登录数据库 mysql -hlocalhost -uroot -p; #修改密码 mysqladmin -uroot -pold password new; #显示数据库 show database ...

  5. Spring Boot 2 实战:如何自定义 Servlet Filter

    1.前言 有些时候我们需要在 Spring Boot Servlet Web 应用中声明一些自定义的 Servlet Filter 来处理一些逻辑.比如简单的权限系统.请求头过滤.防止 XSS 攻击等 ...

  6. 笔记-AJAX

    笔记-AJAX 1.      简介 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML AJAX 是一种用于创建快速动态网页的技术 ...

  7. Servlet+Spring+Mybatis初试

    1.导入相关的jar包 druid mybatis mybatis-spring pageHelper mysql驱动包 spring-context-support spring-aspect sp ...

  8. shell脚本中执行shell脚本(2)

    (a.sh)读取用户输入参数,并在脚本(b.sh)中使用 1.a.sh #!/bin/sh read -p "please input name value: " name ./b ...

  9. 了解 Fetch API与Fetch+Async/await

    背景 提及前端与服务器端的异步通信,离不开 Ajax (Asynchronous JavaScript and XML).实际上我们常说的 Ajax 并非指某一项具体的技术,它主要是基于用脚本操作 H ...

  10. Flatpak 1.5.2 即将发布

    导读 Flatpak 1.5.1开发版本为Flatpaks的受保护/经过身份验证的下载提供了初始支持,这是基础架构的工作,旨在允许Flathub或Linux上其他基于Flatpak的“应用程序商店”中 ...