题解 | #字符串的全部子序列#

字符串的全部子序列

http://www.nowcoder.com/practice/92e6247998294f2c933906fdedbc6e6a

方法:递归回溯:这里得到的结果通过排序再去重



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串一维数组
     */
    public String[] generatePermutation (String s) {
        // write code here
        ArrayList<String> res=new ArrayList();
        res.add("");
        StringBuilder sb=new StringBuilder(s);
        for(int i=1;i<=s.length();i++){
            process(sb,res,i,0,new StringBuilder());
        }
        Collections.sort(res);
        HashSet<String> set=new HashSet();
        for(int i=0;i<res.size();i++){
            set.add(res.get(i));
        }
        String[] total=new String[set.size()];
        int i=0;
        for(String str:set){
            total[i++]=str;
        }
        return total;
    }
    //num为数量,cur为位置
    public void process(StringBuilder sb,ArrayList<String> res,int num,int cur,StringBuilder ans){
        if(cur==sb.length()||num==0){
            StringBuilder str=new StringBuilder(ans.toString());
            res.add(str.toString());
            return;
        }
        ans.append(sb.substring(cur,cur+1));
        process(sb,res,num-1,cur+1,ans);
        ans.deleteCharAt(ans.length()-1);
        process(sb,res,num,cur+1,ans);
        
    }
}
全部评论

相关推荐

这不纯纯作弊了吗😢😢😢
编程界菜鸡:信这个的这辈子有了,这智商你靠啥都没用
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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