【回溯-字母全排列&&dfs】LCR 157. 套餐内商品的排列顺序

某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。

返回结果 无顺序要求,但不能含有重复的元素。

示例 1:

输入:goods = "agew"
输出:["aegw","aewg","agew","agwe","aweg","awge","eagw","eawg","egaw","egwa","ewag","ewga","gaew","gawe","geaw","gewa","gwae","gwea","waeg","wage","weag","wega","wgae","wgea"]

提示:

  • 1 <= goods.length <= 8
       public String[] goodsOrder(String s) {
            List<String> ans=new ArrayList<>();
            dfs(s.toCharArray(),0,ans);
            return ans.toArray(new String[ans.size()]);
        }
        
        private void dfs(char[] cs,int start,List<String> ans){
            if(start==cs.length){
                ans.add(new String(cs));
                return;
            }
            
            int[] map=new int[128];
            for(int i=start;i<cs.length;i++){
                if(map[cs[i]]!=0) continue;
                map[cs[i]]++;
                swap(cs,i,start);
                dfs(cs,start+1,ans);
                swap(cs,i,start);
            }
        }
        
        private void swap(char[] cs,int i,int j){
            char c=cs[i];
            cs[i]=cs[j];
            cs[j]=c;
        }
算法笔试题解-回溯系列 文章被收录于专栏

算法笔试题解-回溯系列

全部评论

相关推荐

抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务