字符串、字典树
一、字符串相关知识
1、字串:连续区间的串
2、子序列:可以不连续的串,但是相对位置要保持一致
3、sprintf、sscanf(对char类型而言)
4、string
append(s, pos, n) // 将字符串 s 中,从 pos 开始的 n 个字符连接到当前字符串结尾。
replace(pos, n, s) //删除从 pos 开始的 n 个字符,然后在 pos 处插入串 s。
erase(pos, n) // 删除从 pos 开始的 n 个字符。
insert(pos, s) // 在 pos 位置插入字符串 s。
二、字典树(Trie树)
1、字典树应用
- 查找字符串是否在字典树中出现
- 维护异或极值
- 维护异或和
- 全局加一
2、字典树相关代码
const int N = 1e5 + 10;
struct node{
int cnt[10];//表示每个儿子节重复次数
int nx[10];//表示儿子节点的编号
}a[N];
int n, tot;
string st[N];
int tt;
void add(string st){//向字典树中添加字符串st
int now = 0;
for(int i = 0; i < st.size(); i++){
int ch = st[i] - '0';
if(!a[now].nx[ch]){
a[now].nx[ch] = ++tot;
}
a[now].cnt[ch] ++;
now = a[now].nx[ch];
}
}
bool fid(string st){//判断字典树是否含有st字符串
int now = 0;
int ch;
for(int i = 0; i < st.size(); i++){
ch = st[i] - '0';
if(i == st.size() - 1){
if(a[now].cnt[ch] >= 2) return false;
}
now = a[now].nx[ch];
}
return true;
}
本文作者:风归去
本文链接:https://www.cnblogs.com/N-lim/p/16924074.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步