题目描述:
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
注意事项
所有的字符串都只包含小写字母
样例
对于字符串数组 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]
1 public class Solution { 2 /** 3 * @param strs: A list of strings 4 * @return: A list of strings 5 */ 6 7 public static boolean anagram(String s, String t) { 8 if(s.length() != t.length()) 9 return false; 10 else{ 11 for(int i=0;i<t.length();i++){ 12 if(s.indexOf(t.charAt(i))!=-1){ 13 int j = s.indexOf(t.charAt(i)); 14 s = s.substring(0, j)+s.substring(j+1); 15 } 16 else{ 17 return false; 18 } 19 } 20 return true; 21 } 22 } 23 24 public List<String> anagrams(String[] strs) { 25 // write your code here 26 List<String> rStr = new LinkedList<String>(); 27 int length = strs.length; 28 for(int i=0;i<length;++i){ 29 String str = strs[i]; 30 if(str!=null){ 31 for(int j=i+1;j<length;j++){ 32 String strToCom = strs[j]; 33 if(strToCom != null){ 34 if(anagram(str,strToCom)){ 35 if(strs[i]!=null){ 36 rStr.add(str); 37 } 38 if(strs[j]!=null){ 39 rStr.add(strToCom); 40 } 41 42 strs[i] = null; 43 strs[j] = null; 44 } 45 } 46 47 } 48 } 49 50 } 51 return rStr; 52 53 } 54 }