题目:
给定两个字符串 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());
}
}
}
 

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. 安卓手机短信Android SMS 对话号thread_id如何产生与变化

    安卓mmssms.db的sms表的thread_id字段 一个短信号码对应的thread_id字段数字,在手机格机(恢复出厂设置 删除手机上的所有数据)和刷机后会更新.不过这也是显然的,格机和刷机都会 ...

  2. 自身经历 .NET转Java 的一些分享

    原因 楼主在二线城市从事.NET开发8年,当薪资达到15k想往20k跳的时候,发现一个残酷的现实.在招聘信息上给出这个薪资的一共10家,其中:2~3家给出的是假的薪资范围(吸引面试者),2家是总人数不 ...

  3. 一次从Github向Gitee迁库踩坑记录

    先上结论:gitee的lfs功能收费,直接从github迁移包含lfs管理的文件会出错,配置lfs.url即可解决问题 Q: 为什么要迁库呢? A: github访问太慢了,不然我也不想费这个功夫! ...

  4. Mysql基本用法-left join、right join、 inner join、子查询和join-02

    left join #左连接又叫外连接 left join 返回左表中所有记录和右表中连接字段相等的记录  test_user表 phpcvs表 SQL: select * from test_use ...

  5. AStarPathFinding

    简单例子: https://blog.csdn.net/wingfourever/article/details/9274091 修饰符解释: https://zhuanlan.zhihu.com/p ...

  6. Spring Boot Security JWT 整合实现前后端分离认证示例

    前面两章节我们介绍了 Spring Boot Security 快速入门 和 Spring Boot JWT 快速入门,本章节使用 JWT 和 Spring Boot Security 构件一个前后端 ...

  7. day 11 笔记

    # 装饰器形成的过程 : 最简单的装饰器 有返回值的 有一个参数 万能参数 # 装饰器的作用 # 原则 :开放封闭原则 # 语法糖 :@ # 装饰器的固定模式 #不懂技术 import time # ...

  8. 记录6--Java栈堆

    class Person { int age; } public class LearnHeap { public static void main(String args[]){ int a=18; ...

  9. Flatpak 1.5.2 即将发布

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

  10. Servlet 设置字符编码filter

    filter package common; import javax.servlet.*; import java.io.IOException; public class EncodingFilt ...