zoukankan      html  css  js  c++  java
  • 剑指Offer 38 字符串的排列

      JAVA 回溯解法:

    public final String[] permutation(String s) {
            Set<String> reSet = new HashSet<String>();
            search(s, 0, reSet, new StringBuilder(), new HashSet<Integer>());
            return reSet.toArray(new String[reSet.size()]);
        }
    
        private final void search(String s, int len, Set<String> reSet, StringBuilder sb, Set<Integer> path) {
            if (len == s.length()) {
                String reStr = sb.toString();
                if (!reSet.contains(reStr)) {
                    reSet.add(reStr);
                }
                return;
            }
            for (int i = 0; i < s.length(); i++) {
                if (path.contains(i)) {
                    continue;
                }
                char currentChar = s.charAt(i);
                path.add(i);
                sb.append(currentChar);
                int nextLen = len + 1;
                search(s, nextLen, reSet, sb, path);
                path.remove(i);
                sb.deleteCharAt(len);
            }
        }

      JS 回溯解法:

    var permutation = function (s) {
        let reSet = new Set();
        search(s, 0, reSet, new Array(s.length), "");
        return Array.from(reSet);
    };
    
    var search = function (s, len, reSet, path, reStr) {
        if (len == s.length) {
            if (!reSet.has(reStr)) {
                reSet.add(reStr);
            }
            return;
        }
        let nextLen = len + 1;
        for (let i = 0; i < s.length; i++) {
            if (path[i] === 1) {
                continue;
            }
            let currentChar = s.charAt(i);
            path[i] = 1;
            search(s, nextLen, reSet, path, reStr + currentChar);
            path[i] = undefined;
        }
    }

  • 相关阅读:
    TextBox控件
    Button控件
    WinForm调试输出数据
    使用NPIO操作Excel
    窗体类笔记
    this关键字的使用
    51job招聘.Net职位分析(关于大学生就业的一点建议)
    解决线性表的编程问题
    如何在UWP中统一处理不同设备间的页面回退逻辑
    Python带你轻松进行网页爬虫
  • 原文地址:https://www.cnblogs.com/niuyourou/p/13420028.html
Copyright © 2011-2022 走看看