分析一点最近学习的东西,链表和Trie算法
来源:互联网 发布:mc1413 数据手册 编辑:程序博客网 时间:2024/05/20 16:44
package com;
public class A {
public B root;
public final class B{
public B b1;
public B b2;
public B b3;
public char next;
public B (char next){
this.next=next;
}
}
public B search(String key){
if(root==null){
root= new B(key.charAt(0));
}
B cuur=null;
cuur=root;
int index=0;
B node=null;
while(true){
if (cuur == null)
break;
int c=key.charAt(index)-cuur.next;
if(c==0){
index++;
if(index==key.length()){
node=cuur;
break;
}
cuur=cuur.b1;
}else if(c<0){
cuur=cuur.b3;
}
else if(c>0){
cuur=cuur.b2;
}
}
return node;
}
/**
* tire 算法
* 数据结构链表
* @param cont
* @return
*/
public B create(String cont){
int index=0;
if (root == null) {
root = new B(cont.charAt(0));
}
B cuur=null;
cuur=root;
while(true){
int c=cont.charAt(index)-cuur.next;//两个char 相减,得到ascii码,
if(c==0){//ascii码相同
index++;
if(index==cont.length()){//如果当前位置和输入字符串相等 返回这个节点介绍循环
return cuur;
}
if(cuur.b1==null){//如果当前不存在这个节点,每次循环创建下一个节点用来比较
cuur.b1=new B(cont.charAt(index));
}
cuur=cuur.b1;
}else if(c<0){//如果ASCII码小于0 我的理解是,这个字符排列在当前字符前面,这样就会有顺序
if(cuur.b2==null){
cuur.b2=new B(cont.charAt(index));
}
cuur=cuur.b2;
}else {
if(cuur.b3==null){
cuur.b3=new B(cont.charAt(index));
}
cuur=cuur.b3;
}
}
}
public static void main(String[] args) {/*
String ss="saasaas";
Class<A> aa=A.class;
try {
Object obj=aa.newInstance();
Method m=aa.getMethod("insert", String.class);
m.invoke(obj, ss);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
A a=new A();
// /a.insert("saa");
a.create("sa");
a.create("sss");
/* try {
String ss="sssss";
A te=aa.getConstructor(ss.getClass()).newInstance(ss.getClass());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
public class A {
public B root;
public final class B{
public B b1;
public B b2;
public B b3;
public char next;
public B (char next){
this.next=next;
}
}
public B search(String key){
if(root==null){
root= new B(key.charAt(0));
}
B cuur=null;
cuur=root;
int index=0;
B node=null;
while(true){
if (cuur == null)
break;
int c=key.charAt(index)-cuur.next;
if(c==0){
index++;
if(index==key.length()){
node=cuur;
break;
}
cuur=cuur.b1;
}else if(c<0){
cuur=cuur.b3;
}
else if(c>0){
cuur=cuur.b2;
}
}
return node;
}
/**
* tire 算法
* 数据结构链表
* @param cont
* @return
*/
public B create(String cont){
int index=0;
if (root == null) {
root = new B(cont.charAt(0));
}
B cuur=null;
cuur=root;
while(true){
int c=cont.charAt(index)-cuur.next;//两个char 相减,得到ascii码,
if(c==0){//ascii码相同
index++;
if(index==cont.length()){//如果当前位置和输入字符串相等 返回这个节点介绍循环
return cuur;
}
if(cuur.b1==null){//如果当前不存在这个节点,每次循环创建下一个节点用来比较
cuur.b1=new B(cont.charAt(index));
}
cuur=cuur.b1;
}else if(c<0){//如果ASCII码小于0 我的理解是,这个字符排列在当前字符前面,这样就会有顺序
if(cuur.b2==null){
cuur.b2=new B(cont.charAt(index));
}
cuur=cuur.b2;
}else {
if(cuur.b3==null){
cuur.b3=new B(cont.charAt(index));
}
cuur=cuur.b3;
}
}
}
public static void main(String[] args) {/*
String ss="saasaas";
Class<A> aa=A.class;
try {
Object obj=aa.newInstance();
Method m=aa.getMethod("insert", String.class);
m.invoke(obj, ss);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
A a=new A();
// /a.insert("saa");
a.create("sa");
a.create("sss");
/* try {
String ss="sssss";
A te=aa.getConstructor(ss.getClass()).newInstance(ss.getClass());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
阅读全文
0 0
- 分析一点最近学习的东西,链表和Trie算法
- 最近的目标和要学习的东西
- 英语学习的一点东西
- 最近学习的一点思考
- 第一次学习笔记,Makefile和uboot的一点东西
- 关于struts1最近学习到的东西
- 学习j2me rms写的一点东西
- 路由表的结构与算法分析--trie查找
- 路由表的结构与算法分析--trie插入
- 路由表的结构与算法分析--trie查找
- 路由表的结构与算法分析--trie插入
- 路由表的结构与算法分析--trie插入
- 最近学习引用的一点心得
- 最近学习ffmpeg的一点总结
- 最近学习android的一点体会
- 最近学习python的一点收获
- Trie介绍,来自刘汝佳老师的书加上自己的一点东西
- 学习一点东西
- 实现一个函数,可以左旋字符串中的k个字符。(三种方法)
- 游戏外挂制作原理
- 每天一个linux命令(6):rmdir 命令
- 用tomcat处理n个请求来说明,什么是进程,什么是线程
- java搭建基于springboot的ssm(spring + springmvc + mybatis)的maven项目
- 分析一点最近学习的东西,链表和Trie算法
- 高通平台启动log概述(PBL log、sbl1 log、kernel log)
- react&&plume2&&css资料汇总
- selenium(java)窗口截图的应用--异常后截图
- 对分布式事务及两阶段提交、三阶段提交的理解
- Tomcat<Cluster>Liferay_Session共享机制
- ssm 处理静态资源完美方案
- java socket通信I/O阻塞>多线程实现非阻塞通信
- 设计模式六大原则