当前位置: 首页 > news >正文

山东高端网站设计win2003 建设网站

山东高端网站设计,win2003 建设网站,网站建设后台管理怎么管理,怎么判断是不是外包公司17.给定一个仅包含数字 2-9 的字符串#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下#xff08;与电话按键相同#xff09;。注意 1 不对应任何字母。 示例 1#xff1a; 输入#xff1a;digits “23” 输出#xff1a;[… 17.给定一个仅包含数字 2-9 的字符串返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下与电话按键相同。注意 1 不对应任何字母。 示例 1 输入digits “23” 输出[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例 2 输入digits “” 输出[] 示例 3 输入digits “2” 输出[“a”,“b”,“c”] 首先我们根据每个按键对应的字母先创建一个二维字符数组 tab。分析题目每个按键对应几个字符那么当我们组合时比如示例 1“2” 对应的字符为 [a,b,c]即我们在组合时首位可以为这三种可能在这三种可能的基础上我们继续延伸3 对应为 def即我们从之前的三种可能可以再分别延伸出三种可能比如最开始选 a就能得到 [ad,ae,af]最开始选 b 就能得到 [bd,be,bf]…。我们可以发现这样从一种可能延伸出其他可能就像是一棵 n 叉树只不过根节点的值为空字符。那么我们就 bfs 这棵树得到所有可能。我们用一个 list 从尾部存储结果取的时候从头取。如果头部的拼接字符串已经等于 digits 的长度了说明每种可能都拼接完毕。可以代入例子 1 分析以下代码res 的变化会经历 [] - [a,b,c] - [b,c,ad,ae,af] - [c,ad,ae,af,bd,be,bf] - [ad,ae,af,bd,be,bf,cd,ce,cf] public ListString letterCombinations(String digits) {LinkedListString res new LinkedList();//空判断if (digits null || digits.isEmpty())return res;// 按键对应表char[][] tab {{a, b, c}, {d, e, f}, {g, h, i},{j, k, l}, {m, n, o}, {p, q, r, s},{t, u, v}, {w, x, y, z}};// 空字符根节点入队res.add();while(res.peek().length() ! digits.length()){String remove res.poll();//出队// 根据当前拼接字符或者说当前节点的值可以判断出我们需要拼接第几个字符// 比如最开始为空字符说明我们要为其拼接第一个字符// 它对应的字符为 digits.charAt(remove.length())// 由于字符是从 2-9但是我们的对应表数组下标从 0 开始// 即比如字符 2 对应的是 tab[0]// 所以这个字符对应的可能选项为// tab[digits.charAt(remove.length()) - 2]char[] chars tab[digits.charAt(remove.length()) - 2];// 拼接每种可能再入队for(int i0;ichars.length;i){res.add(removechars[i]);}}return res;}既然可以 bfs那么我们难免会想到用 dfs还是一样的原理这里的递归终止条件就是得到一种可能我们就记录并 return否则还是根据不同的可能性递归。其实按道理这个逻辑是回溯所以需要撤销操作比如我们得到了 ad 后应该复位成 a再得到 ae-a-af然后复位成空字符串继续得到 b-bd-b-be...否则你可能得到 ad 以后别的递归部分使用到的 str 就是从 ad 开始拼接得到比如 ade、adef但是由于递归时每个字符串都是新的对象不会污染每个可能性分支也就不用撤销操作了 LinkedListString res new LinkedList();char[][] tab {{a, b, c}, {d, e, f}, {g, h, i},{j, k, l}, {m, n, o}, {p, q, r, s},{t, u, v}, {w, x, y, z}};String digits;public ListString letterCombinations(String digits) {// 防空if (digits null || digits.isEmpty())return res;this.digits digits;dfs();return res;}public void dfs(String str){if(str.length() digits.length()){res.add(str);return;}char[] chars tab[digits.charAt(str.length()) - 2];for(int i0;ichars.length;i){dfs(strchars[i]);}}
http://www.pierceye.com/news/560732/

相关文章:

  • php 打开网站东莞网站建设网页推广
  • 正品海外购网站有哪些公司网站开发费用兴田德润在哪儿
  • 怎样做编辑发到网站自由建网站的网络程序
  • 网站开发 卡片cms建站系统 下载
  • 新浪门户网站是谁做的科技网站建设
  • 免费网站建设合同书山西网站建设企业
  • 网站建设空间什么意思学做网站什么语言合适
  • 网站开发的形式有( )友情链接英文
  • 帝国网站管理系统前台免费photoshop下载
  • 深圳一百讯网站建设wordpress汉化包
  • 建设一个班级网站的具体步骤自己的网站源代码一片空白
  • 初创公司 建网站wordpress 模板获取数据库
  • 怎么在网站做推广不要钱六安网约车平台
  • 申晨推荐的营销网站做卖挖掘机的网站
  • 网站广告牌制作教程来几个好看的网站
  • php企业网站源码蓝色印度喜欢用什么框架做外贸网站
  • 网站建设教程最新资讯wordpress说说伪静态
  • 长春建站程序网络营销推广方法脑24金手指效率高
  • 专门做房地产设计的图片网站在安徽省住房和城乡建设厅网站
  • 怎样制作图片网站广告制作公司电话
  • 电子商城网站开发教程湖北网站建设路
  • 广告公司网站模版快速seo关键词优化技巧
  • whois哪个网站好WordPress判断文章形式
  • 昆明网站建设排名网站推广营销策划方案
  • 深圳网站建设中心手机端网站搭建
  • 提取卡密网站怎么做怎么更换网站的域名
  • 网站开发接单网站站内推广方案
  • 网站建设网站建什么网站做二手货车
  • 如何做淘宝客的网站网站建设 源代码
  • 建设部网站 造价全世界足球排名前十位