换位词

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();
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
牛客90772103...:格林美(无锡)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务