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

最新文章

  1. 搭建一套自己实用的.net架构(4)【CodeBuilder-RazorEngine】
  2. 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel
  3. ubuntu下使用反编译apk,工具dex2jar和jd-gui
  4. ajaxFileUpload增加附加参数
  5. IK分词算法设计总结
  6. DirectX Sample-Blobs实现原理
  7. C++中顶层const和底层const
  8. 设计模式--模板方法 And State模式
  9. geom设置—折线图
  10. 大数据Python学习大纲
  11. 用PyCharm执行测试成功但无法生成HTMLTestRunner报告
  12. [转载] ZooKeeper的Java客户端API
  13. Java I/O---输入与输出
  14. springMVC源码分析--@ModelAttribute使用及运行原理
  15. Django之自带的认证系统 auth模块
  16. 75.iOS内存管理
  17. Ex 3_17 无穷路径..._十一次作业
  18. 题解——Codeforces Round #507 (based on Olympiad of Metropolises) T1 (模拟)
  19. Qt532.QString::split()
  20. 从零系列--开发npm包(一)

热门文章

  1. 洛谷 P3009 [USACO11JAN]利润Profits
  2. PAT A1103 Integer Factorization
  3. day2-2循环语句
  4. mapreduce程序执行过程
  5. 为什么需要NAT,目前家庭的计算机器如何上网?(原创)
  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 显示代码:同一行代码片段: span, div
  7. 在PyCharm中自动添加文件头、时间日期等信息
  8. 爬虫实战_爬取豆瓣图书利用csv库存储
  9. 「BJOI2018」求和
  10. Centos7 安装编译nginx-1.9.6过程