2019独角兽企业重金招聘Python工程师标准>>>

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Stack;/*** Created by ${chixiu} on 17/11/10.*/
public class TriedStr {public static void main(String[] args) {String[] worlds = new String[]{"d","do","dog","p","pe","pen","peng","pengu","pengui","penguin","e","el","ele","elep","eleph","elepha","elephan","elephant"};longestWord(worlds);System.out.println("TriedStr.main "+longestWord(worlds));}public static  String longestWord(String[] words) {Node root = new Node();int i=0;for(String sl :words){sert( sl, i, root );i++;}return findF(root,words);}static class Node{int index=-1;Map<Character,Node> map = new HashMap<Character,Node>();}public static String findF(Node root,String[] words){Node cur = root;String ans="";Stack<Node>  stack = new Stack<>();stack.push(cur);while(!stack.empty()){Node node = stack.pop();if(node == root){for( Map.Entry<Character,Node> entrySet:node.map.entrySet()){stack.push(entrySet.getValue());}}else{if(node.index <0){continue;}String word = words[node.index];if (word.length() > ans.length() ||word.length() == ans.length() && word.compareTo(ans) < 0) {ans = word;}for( Map.Entry<Character,Node> entrySet:node.map.entrySet()){if(entrySet.getValue().index <0){continue;}stack.push(entrySet.getValue());}}}return ans;}public static void  sert(String str,int index,Node root ){Node cur = root;for(Character character:str.toCharArray()){Node node = cur.map.get(character);if( node == null){node = new Node();cur.map.put(character,node);}cur = node;}cur.index=index;}
}

转载于:https://my.oschina.net/u/1388024/blog/1571193

利用trie Tree 解决查找连续子字符串的问题相关推荐

  1. 1869. 哪种连续子字符串更长

    1869. 哪种连续子字符串更长 给你一个二进制字符串 s .如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true :否则,返回 false . ...

  2. LeetCode 1869. 哪种连续子字符串更长

    文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s .如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true :否则,返回 f ...

  3. Leetcode之 哪种连续子字符串更长

    题目: 给你一个二进制字符串 s .如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true :否则,返回 false . 例如,s = " ...

  4. 力扣311场周赛:最长的字母序连续子字符串的长度

    本文以python为编程语言,题目来源于力扣311届周赛 题目: 字母序连续字符串是由字母表中连续字母组成的字符串.换句话说,字符串 "abcdefghijklmnopqrstuvwxyz& ...

  5. 已知字符串str1 = tomorrow is sunny day,下列表达式能正确查找到子字符串is的是()(选两项)

  6. java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...

  7. Python在字符串中查找子字符串

    这是小白博主在刷leetcode时遇到的一道题,这是博主近日刷的leetcode题库时结果表现最好的一道题,故在此分享这份喜悦. 希望在以后的日子里可以继续进步,持之以恒. 目录 题目介绍 解题思路及 ...

  8. android 查找字符在字符串的位置

    昨天,自己用到在字符串内查找一个字符串的位置,主要用到了  indexOf()的代码,这个是判断字符在字符串的第一次出现的位置.今天,自己没有什么好写的,所以决定把这个记录一下.也是很有用的. J ...

  9. Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...

    在 Linux 中,我们可以使用 expr 命令对字符串做一些处理.例如: expr index STRING CHARS 获取指定字符在字符串中的位置 expr substr STRING POS ...

最新文章

  1. 数字图像处理3:取样和量化
  2. tensorflow 无法执行sess =tf .session ()_深度学习|费解的tensorflow
  3. 高德地图API 简单使用
  4. 常用计算机服务,常用计算机端口对应的服务(The commonly used computer port corresponding service).doc...
  5. php 数组对比 unset,如何区分PHP中unset,array_splice的区别
  6. Kernel Memory Layout on ARM Linux
  7. Struts2数据封装
  8. 各种SQL数据库的数据类型
  9. 数据库JDBCUtil 工具类 增加连接池操作
  10. npm下载安装教程_npm下载,安装和使用教程
  11. 技术交底书在专利申请文件撰写中的功用
  12. 动态拼接LINQ查询条件
  13. PHP设置表格框线,ppt中表格边框线条怎样设置?
  14. php木马在线查杀_网站木马监控查杀扫描 ASP木马 PHP木马上传拦截
  15. 读书笔记012:《伤寒论》- 手少阳三焦经
  16. pynq 环境搭建_FPGA硬件加速的图像大小调整案例分析
  17. UVALive 5135 Mining Your Own Bussiness【tarjan点双】
  18. 003基于神经网络的癫痫脑电信号检测与分类
  19. 爬虫 google maps接口分析
  20. 【CSS 定位之 display 属性】

热门文章

  1. RKMPP库快速上手--(二)MPP关键配置
  2. python实现三角形面积计算
  3. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day10-字符串
  4. IT三部曲之达摩研究院(上)
  5. 微信小程序开放平台代码部署特约商户
  6. 波束赋形技术lms算法在matlab仿真,自适应波束成形算法LMS、RLS、VSSLMS分解
  7. ArcGIS API For Javascript之调用动态地图服务+属性、空间查询
  8. 微型计算机AL和AH区别,微型计算机的技术与应用.ppt
  9. vue刷新当前页面--provide / inject 用法
  10. USB-IF BC1.2充电协议解读