题目:
给定两个字符串 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. htmlunit的使用

    原文转自:https://www.cnblogs.com/davidwang456/articles/8693050.html HtmlUnit使用场景 httpClient的局限性 对于使用java ...

  2. ZooKeeper 相关知识

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhang123456456/articl ...

  3. laravel nginx下 css 和js 加载 重写规则

    server { listen 80; server_name test.hanwen.com; #charset koi8-r; #access_log logs/host.access.log m ...

  4. ubuntu13.10更新sources.list

    步骤: 1>设置网络连接方式,NAT 2>自动获取ip address 10.0.2.15 3>更新源soureces.list soureces.list deb http://m ...

  5. Spring报错汇总笔记

    报错信息: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing X ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:列表

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志

    一.Apache用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容 <Virtu ...

  8. 如何使用ffmpeg进行音视频裁剪命令和音视频合成命令

    音视频剪裁命令 ffmpeg -i input.mp4 -ss 00:00:00 -t 10 out.ts -i : 指定视频 -ss : 开始时间 -t : 指定裁剪的秒数 音视频合并的命令 ffm ...

  9. mysql5.7 忘记root密码修改方式

    参考文档: http://www.jb51.net/article/77858.htm # /etc/init.d/mysql stop --停止mysql服务 # /work/program/mys ...

  10. Using SmartAssembly with MSBuild

    SmartAssembly 6 SmartAssembly 6 documentation Building your assembly Using SmartAssembly with MSBuil ...