• 每日一题 为了工作 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();
        }
    }
    

      

  • 相关阅读:
    作业29——制作首页的显示列表。
    作业28——发布功能完成。
    作业27——登录之后更新导航
    作业26——完成登录功能,用session记住用户名
    作业25——完成注册功能
    作业24——通过用户模型,对数据库进行增删改查操作。
    作业23——连接mysql数据库,创建用户模型
    作业22——管理信息系统的开发与管理
    作业——21加载静态文件,父模板的继承和扩展
    值类型与引用类型区别
  • 原文地址:https://www.cnblogs.com/walxt/p/12755616.html
Copyright © 2020-2023  润新知