1.把原来的字符串数组strs进行排序后保存到另一个字符串数组s中;
2.排序以后相同的自然会出现;
3.设置一个相同长度的boolean[] flag,遍历flag数组,相同设置为true;
4.ArrayList添加索引位置为true的字符串。
import java.util.*; public class Solution { public ArrayList<String> anagrams(String[] strs) { ArrayList<String> list = new ArrayList<>(); if(strs==null||strs.length==0){ list.add(""); return list; } int len = strs.length; String[] s = new String[len]; boolean[] flag = new boolean[len]; //对数组strs中的每一个字符串进行排序后添加到对应的数组s中 for(int i=0;i<len;i++){ s[i] = sort(new StringBuilder(strs[i])); } //遍历数组s,如果遇到相同的则将对应位置的flag设置为true for(int i=0;i<len;i++){ for(int j=i+1;j<len;j++){ if(s[i].equals(s[j])){ flag[i]=true; flag[j]=true; } } } //list添加strs数组对应位置的字符串 for(int i=0;i<len;i++){ if(flag[i]) list.add(strs[i]); } return list; } public String sort(StringBuilder s){ for(int i=0;i<s.length();i++){ for(int j=s.length()-2;j>=i;j--){ if(s.charAt(j)>s.charAt(j+1)){ char temp = s.charAt(j); s.setCharAt(j,s.charAt(j+1)); s.setCharAt(j+1,temp); } } } return s.toString(); } }