• 每日一题 为了工作 2020 0422 第五十一题


    /**
     * 【问题】字符串转换路径问题
     *         给定两个字符串,记为start和to,再给定一个字符串列表list,list中一定包含
     *         to,list中没有重复的字符串。所有字符串都是小写的。规定start每次只可以改
     *         变一个字符,最终的目标是彻底变成to,但每次变成的字符串都必须在list中存在。
     *         请返回最短的变换路径。
     * 【举例】
     *         start = "abc"
     *         to = "cab"
     *         list = {"cab","acc","cbc","ccc","cac","cbb","aab","abb"}
     *         转换路径的方法有很多种,但是最短的转换路径如下:
     *         abc --> abb --> aab --> cab
     *         abc --> abb --> cbb --> cab
     *         abc --> cbc --> cac --> cab
     *         abc --> cbc --> cbb --> cab
     * 【分析】
     *         本题目难度较大,需要拆分成四个步骤进行实现,接下来完成第一步骤获取每一个
     *         字符串的nexts信息。
     *
     * 【第三步】
     *         从start出发往下走,保证每走一步走到的字符串cur到start的最短距离都在加一,
     *         如果能够走到to,则收集整条路。
     *         如题设从"abc"出发,每一步都通过字符串的nexts信息往下走,但是必须保证到start
     *         的最短距离是+1递增的。
     *         整个过程是标准的深度优先遍历,往下走的过程中,因为有最短距离要不断+1递增的
     *         限制,所以走的岔路不可能无穷尽的展开,也不可能形成环。
     *
     * @author 雪瞳
     * @Slogan 时钟尚且前行,人怎能再此止步!
     * @Function
     *
     */
    public class GetShortPath {
    
        public void getShortPaths(String cur, String to, HashMap<String,ArrayList<String>> nexts,
                                  HashMap<String,Integer> distanes, LinkedList<String> solution,
                                  List<List<String>> res){
            solution.add(cur);
            if (to.equals(cur)){
                res.add(new LinkedList<String>(solution));
            }else {
                for (String next:nexts.get(cur)){
                    if (distanes.get(next) == distanes.get(cur)+1){
                        getShortPaths(next, to, nexts, distanes, solution, res);
                    }
                }
            }
            solution.pollLast();
        }
    }
    

      

  • 相关阅读:
    c# linq.Where+Func<object,bool>筛选数据
    【转】深入线程安全容器的实现方法
    c# 泛型+反射
    c# List<接口>小技巧
    winfrom的右击菜单项事件中如何获取关联控件的引用
    ASP.NET 1.0
    让包含GridView的div或panel的滚动条自己拉到底部怎么做?
    微软的IE中调试JavaScript的工具下载链接
    ASP.NET调试启动默认浏览器如何设置
    C# WinForm的PictureBox控件图片的拉伸或收缩方式跟随着控件的大小
  • 原文地址:https://www.cnblogs.com/walxt/p/12755616.html
Copyright © 2020-2023  润新知