Leetcode字典树-720:词典中最长的单词
2024-09-20 17:13:05
第一次做leetcode的题目,虽然做的是水题,但是菜鸟太菜,刚刚入门,这里记录一些基本的知识点。大佬看见请直接路过。
https://leetcode-cn.com/problems/longest-word-in-dictionary/
下面是代码与我的解析:
class Solution {
public: class Tree{
public://这里为了之后的调用需要明确,否则就被认定为是Tree的private,无法调用
bool has_words=false;
vector<Tree*> v; Tree():has_words(false),v(){};
//初始化时对v传递参数26是实际上是产生了关于vector的一位数组
static void wordsinsert(Tree* t,string aim){
for(char c:aim){
if(!t->v[c-'a'])t->v[c-'a']=new Tree;
t=t->v[c-'a'];
}
t->has_words=true;
} static bool searchwords(Tree* t,string aim){
for(char c:aim){
t=t->v[c-'a'];
if(!t->has_words)return false;
}
return true;
}
}; string longestWord(vector<string>& words) {
Tree* root=new Tree;
for(string aim:words){//注意熟悉遍历的方法
Tree::wordsinsert(root,aim);//由于Tree中的后两个函数都声明了static类型,所以这里可以在没有对应的类型实例的情形下借助类型名直接调用函数
}//详细关于静态函数的解析(一定要看仔细!)
string longest="";
for(string aim:words){
if(Tree::searchwords(root,aim)){
if(aim.size()>longest.size())longest=aim;
else if(aim.size()==longest.size()&&aim<longest)longest=aim;
}//字典序直接比较即可
}
return longest;
}
};
OK
最新文章
- Ajax --- 数据请求
- eclipse连接外部tomcat进行debug
- leetcode-Maximum Subarray
- 提高IO性能
- WordPress主题制作函数
- 第十章 Vim程序编辑器学习
- 【管理工具】Git的安装与使用
- 实现android支持多线程断点续传下载器功能
- javascript进击(六)Jquery
- linux-0.11抠代码-GDB+VMWARE
- 通过openssh远程登录时的延迟问题解决
- 时间复杂度O(n),空间复杂度O(1)解斐波那契数列
- htmlElement.style 是只读属性
- [No0000FF]鸡蛋煮熟了蛋黄为什么发黑?
- Hive:解决Hive创建文件数过多的问题
- 每天记命令:lscpu 和 cat /proc/cpuinfo
- Android.mk (2) 函数进阶教程 - 分支、循环、子程序
- java.util.ConcurrentModificationException: null
- BootStarp的form表单的基本写法
- Windows7下搭建Android开发环境
热门文章
- Hyper-V 搭建独臂路由器(单网卡也可以)
- Dynamics 365 CRM 在 Connected Field Service 中部署 IoT Central (三)- 发送 work order 和 booking 信息给 IoT Central
- Linux守护进程之systemd
- python笔记13
- 暑假第四周总结(HDFS编程实践,安装HBASE)
- LeetCode19 移除倒数第N个元素
- SpringBoot学习(3) - jdbc
- Dubbo学习系列之十七(微服务Soul网关)
- DG参数 LOG_ARCHIVE_DEST_n
- Shiro自动登录