换位词
anagrams
http://www.nowcoder.com/questionTerminal/e84e273b31e74427b2a977cbfe60eaf4
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();
}
}
查看9道真题和解析