给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
注意事项
所有的字符串都只包含小写字母
样例
对于字符串数组 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]
挑战
What is Anagram?
- Two strings are anagram if they can be the same after change the order of characters.
public class Solution {
/**
* @param strs: A list of strings
* @return: A list of strings
*/
public List<String> anagrams(String[] strs) {
// write your code here
List<String> list=new ArrayList<String>();
if(strs.length==0||strs==null){
return list;
}
ArrayList<String> only=new ArrayList<String>();
only.add(reSort(strs[0]));
for(int i=1;i<strs.length;i++){
String s=reSort(strs[i]);
only.add(s);
}
for(int i=0;i<strs.length;i++){
String s=reSort(strs[i]);
if(only.indexOf(s)!=only.lastIndexOf(s)){
list.add(strs[i]);
}
}
return list;
}
private static String reSort(String s){
char []arr=s.toCharArray();
Arrays.sort(arr);
String result="";
for(int i=0;i<arr.length;i++){
result+=arr[i];
}
return result;
}
}