• 【Lintcode】680. Split String把原有string分拆成小的string


    描述
    给一个字符串,你可以选择在一个字符或两个相邻字符之后拆分字符串,使字符串由仅一个字符或两个字符组成,输出所有可能的结果

    样例
    样例1

    输入: "123"
    输出: [["1","2","3"],["12","3"],["1","23"]]
    样例2

    输入: "12345"
    输出: [["1","23","45"],["12","3","45"],["12","34","5"],["1","2","3","45"],["1","2","34","5"],["1","23","4","5"]

    思路:就是dfs。以前写过:后面的子串长度i + 1,会带着pos + 1。所以只要for一次就行了。

    变形:

    第二题:给一个 string, 随意添加空格,把原有 string 分拆成小的string,输出所有可能结果。
    比如 "abc", 分拆成 [["ab","c"], ["a","bc"], ["a","b","c"]]

    长度可以不限于<=2

    参考和感谢:https://blog.csdn.net/qq_46105170/article/details/105549283

    import java.util.ArrayList;
    import java.util.List;
    
    public class Solution {
        /*
         * @param : a string to be split
         * @return: all possible split string array
         */
        public List<List<String>> splitString(String s) {
            // write your code here
            List<List<String>> res = new ArrayList<>();
            dfs(s, 0, new ArrayList<>(), res);
            return res;
        }
        
        // 从s的s[pos]开始,向后分割出一个或两个字符的子串,加入cur;res储存最后的答案
        private void dfs(String s, int pos, List<String> cur, List<List<String>> res) {
            // 如果pos到达了字符串尾,说明已经切割完毕,则将切割的结果加入res
            if (pos == s.length()) {
                res.add(new ArrayList<>(cur));
                return;
            }
            // 开始枚举从pos后分割长度为1或2的子串,加入cur,并进入下一层递归
            // 递归结束后要记得回溯,恢复现场
            for (int i = pos; i < pos + 2 && i < s.length(); i++) {
                cur.add(s.substring(pos, i + 1));
                dfs(s, i + 1, cur, res);
                cur.remove(cur.size() - 1);
            }
        }
    }
    ————————————————
    版权声明:本文为CSDN博主「记录算法」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_46105170/article/details/105549283
    View Code
  • 相关阅读:
    第十八篇:在SOUI中实现PreTranslateMessage
    第十七篇:使用窗口的cache属性加速SOUI的渲染
    通过驱动向打印机发送一段(ESC)控制指令
    转一个希尔排序
    关于Memo或者Edit之类控件, 直接设置Text无法撤销的解决方案
    关于创建无窗体程序的一点心得
    在Vista或更高版本Windows系统中, 获取超大图标的办法
    随笔里的标签为啥不能用空格分隔??
    一个ICMP单元
    Delphi XE5 与其他版本共存
  • 原文地址:https://www.cnblogs.com/immiao0319/p/14451743.html
Copyright © 2020-2023  润新知