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

网站域名空间续费合同外贸网站如何推广出去

网站域名空间续费合同,外贸网站如何推广出去,怎么做一个app的介绍,北京建设信源网站 怎么打不开大意 示例标签串: 处理结果: 题目1 根据标签串创建树 需求 需求:给出一个字符串,将这个字符串转换为一棵树。 字符串可以在代码里见到,是以#开头,按照\分割的字符串。 你需要将这个字符串&#xff0…

大意

示例标签串:
在这里插入图片描述

处理结果:
在这里插入图片描述

题目1 根据标签串创建树

需求

需求:给出一个字符串,将这个字符串转换为一棵树。
字符串可以在代码里见到,是以#开头,按照\分割的字符串。
你需要将这个字符串,按照树存储为几个长标签串。
请自行编写存储完成后的展示代码。

package com.urfread.review.algorithm.tree;
import org.junit.jupiter.api.Test;import java.util.List;
/*** 1.定义标签结点* 2.定义标签树* 3.根据标签串创建一棵树(你需要保证父标签id的正确性)* 4.输出一棵树的内容*/
class TagNode {Tag tag;List<TagNode> children;
}
class Tag {String label;int parentId;int tagId;
}
class TagTree{Tag root;
}public class TreeBuild {@Testpublic void buildTreeByStrTest(){// 示例标签串String tagString = "#计算机技术/编程语言/Java/注解/" +"#计算机技术/数据结构与算法分析/树/"+"#难度/基础/" +"#重要程度/一般/";TagNode rootNode =buildTreeByStr(tagString);// 自行编写输出展示的代码}public static TagNode buildTreeByStr(String str){TagNode rootNode = new TagNode();// START// 请在此编写代码// ENDreturn rootNode;}
}

实现思路

(以下给出代码,不能匹配这个练习题,这是我实际开发的时候编写的代码)
(只能当做是伪代码)

  1. 处理根节点。根节点不需要考虑标签内容,直接创建即可。
// 创建根节点
TreeNode rootNode = new TreeNode(null); // 根节点无需标签
rootNode.setTag(new Tag(0,"",0));//但还是给一个,以防空指针异常
  1. 为了保证标签id的正确性,所以做了特殊处理
int id = 1; // 标签节点的ID从1开始
lastTagIdMap.put(rootNode, id);//在方法外定义的HashMap。含义为:下一个被添加的结点的id。
  1. 在开始处理字符串之前,我们需要考虑这样一个问题,如何在树中添加一个结点?
    我们需要知道一些特征:添加到哪个结点的孩子中、添加的标签是什么。
    比如现在我们已经创建了根结点,那我们肯定会把下一个结点添加在根结点的孩子中;
    那么结点的内容怎么取?
    我们的标签是以#号开头的,所以去掉#就可以了。但是后边还连着一堆按\分割的子标签,那现在怎么办?
    我们首先按\将字符串分割为字符串数组,现在就可以放心的处理第一个结点了。
  2. 如何处理第二个结点?
    分情况,我们是该另开辟一条路径,还是接着刚才的结点往后续。
    区分依据就是看这个标签开头是不是#,如果是,那么就应该另开辟一条路径;如果不是就直接续。
    也就是说,我们需要保存上一个结点的引用,不然就不知道该把当前结点添加给谁当孩子了。
  3. 特殊情况处理

标签的id:记着手动增长。其实到后边,标签的id可以表示它加入到这课树中的顺序,在存到数据库时,可以进行特殊操作。

分叉:如果遇到两个标签串,前半部分一样,后来分叉怎么处理?如果一样,只移动结点指针,不再创建。

答案

package com.urfread.review.algorithm.tree;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.junit.jupiter.api.Test;import java.util.List;
/*** 1.定义标签结点* 2.定义标签树* 3.根据标签串创建一棵树 (你需要保证父标签id的正确性)* 4.输出处理结果*/
@Data
@NoArgsConstructor
@Getter
class TagNode {Tag tag;List<TagNode> children;public TagNode(Tag tag) {this.tag = tag;}public void addChild(TagNode child) {if (children == null) {children = new java.util.LinkedList<>();}children.add(child);}
}
@Data
@AllArgsConstructor
class Tag {int tagId;String label;int parentId;
}
class TagTree{Tag root;
}public class TreeBuild {@Testpublic void buildTreeByStrTest(){// 示例标签串String tagString = "#计算机技术/编程语言/Java/注解/" +"#计算机技术/数据结构与算法分析/树/"+"#难度/基础/" +"#重要程度/一般/";TagNode rootNode =buildTreeByStr(tagString);// 自行编写输出展示的代码printTree(rootNode);}public static TagNode buildTreeByStr(String tagStr){TagNode rootNode = new TagNode();// START// 请在此编写代码rootNode.setTag(new Tag(0,"",0));int id=1;String[]tags=tagStr.split("/");TagNode currentNode=rootNode;for(String tag:tags){if (tag.startsWith("#")){currentNode=rootNode;tag=tag.substring(1);}boolean isExist=false;if(currentNode.getChildren()!=null)// 判断是否已经插入for (TagNode child:currentNode.getChildren()){if (child.getTag().getLabel().equals(tag)){// 如果已经存在,则只做移动指针的操作currentNode=child;isExist=true;break;}}// 如果不存在,才会继续添加if (!isExist){TagNode newTagNode=new TagNode(new Tag(id++,tag,currentNode.getTag().getTagId()));currentNode.addChild(newTagNode);currentNode=newTagNode;}}// ENDreturn rootNode;}// 输出一棵树,请添加一些分级缩进public static void printTree(TagNode rootNode){// START// 请在此编写代码if (rootNode!=null&&rootNode.getChildren()!=null)for (TagNode child:rootNode.getChildren()){printTree(child,1);}// END}public static void printTree(TagNode rootNode,int level){if (rootNode!=null){for (int i=0;i<level;i++){System.out.print("  ");}System.out.println(rootNode.getTag().getLabel());if (rootNode.getChildren()!=null)for (TagNode child:rootNode.getChildren()){printTree(child,level+1);}}}
}
http://www.yayakq.cn/news/543476/

相关文章:

  • 百度联盟做网站赚钱吗网站建设后期需要后期做的
  • 有没有专门做衣服搭配的网站项目建设情况
  • 交通门户网站建设密云做网站
  • 综合信息网站模板wordpress 邮件收发
  • 番禺做网站800元遵化网站建设
  • 长沙建站挺找有为太极wordpress3.7
  • 电商网站建设实验心得1500办公室现代简约装修效果图
  • 商城网站开发费用一般是多少网站搭建用什么软件
  • 中企动力公司网站价格国外开源代码网站
  • 宣城 网站建设google引擎入口
  • 有哪些国外网站做的好的效果图网站做长尾词好还是单个词好
  • 网站建设力洋专门做团购的网站
  • 网站 设计 案例 简单seo培训资料
  • 云建网站皓丽智能会议平板官网
  • 备案网站内容简介个人网站开发总结文档
  • 网站设计建设趋势销售管理系统有免费版
  • php网站建设设计制作方案网络设计接单
  • 个人主体可以做网站吗ofo的网站用什么做的
  • 网站图片翻页效果如何做网站开发报价表 excel
  • 网站的行为怎么做文化馆的网站怎么建设
  • 网站建设公司的成本有哪些方面比较著名的seo网站
  • 网站建设的图片尺寸应该是像素牡丹江seo网站推广蜘蛛屯优化排名
  • 桂林城乡建设局网站百度站长网站文件验证
  • 网站开发专业主修课程国外jquery网站
  • 网站建设中常见问题分析建设网站专栏
  • 网站上的网站地图怎么做哈尔滨自助建站网站系统
  • 浙江建设网站为何上不了建设银行网站
  • js动效网站企业宣传网站系统建设方案
  • 网站开发和平台开发学生做兼职去哪个网站
  • 网站和后台重庆网站建设模板制作