省选+NOI 第二部分 字符串

Manacher

Manacher _ 搜索结果_哔哩哔哩_Bilibili

浅谈Manacher算法

浅谈Manacher算法_XiaoK's Blog-CSDN博客

Manacher算法详解及模板(求解最长回文串)

Manacher算法详解及模板(求解最长回文串)_bestsort-CSDN博客_manacher算法详解

Manacher算法详解及模板

Manacher算法详解及模板_A_Bo的博客-CSDN博客

Manacher算法详解

Manacher算法详解 - BT-7274 - 博客园

Manacher(马拉车)————O(n)回文子串

Manacher(马拉车)————O(n)回文子串 - 沉~杉 - 博客园

hdu3068之manacher算法+详解

hdu3068之manacher算法+详解_Stephen-CSDN博客

Manacher算法图解

Manacher算法图解_csdn_kou的博客-CSDN博客_manacher算法图解

Manacher算法总结

Manacher算法总结_ddyyxx的程序员之路-CSDN博客_manacher算法



后缀数组

后缀数组的简单介绍

https://www.bilibili.com/video/BV1Ct41147xB

0229省选课【后缀数组】

https://www.bilibili.com/video/BV1VE411J7u8

0306【后缀数组习题课】

https://www.bilibili.com/video/BV1jE411s75E

【MIT 6.851:高级数据结构】讲座18:简洁数据结构 II(后缀数组,后缀树)

https://www.bilibili.com/video/BV1Gx41117en

【ACM】【数据结构】【字符串】【湘潭大学】后缀数组

https://www.bilibili.com/video/BV177411P7KS

【算法小课堂】01在线性时间内计算后缀数组(Suffix Array)

https://www.bilibili.com/video/BV1sb411t79N

【算法小课堂】02_求后缀数组的最长公共前缀(LCP)

https://www.bilibili.com/video/BV1ub41157PH

Suffix array简介和构建

https://www.bilibili.com/video/BV1Ex411k7Pu



后缀自动机

【SDUACM-暑期专题div1】后缀自动机SAM

https://www.bilibili.com/video/BV1wa4y1a7Ag

半小时学会后缀自动机 SAM

https://www.bilibili.com/video/BV1ED4y1U7aU

算法竞赛入门经典-训练指南-ch03-后缀自动机的典型应用

https://www.bilibili.com/video/BV1xJ411s7Fu

2020 西电程序设计竞赛暑期集训 - 广义后缀自动机

https://www.bilibili.com/video/BV1J64y1c7Hu

【AgOHの算法胡扯】点分治

https://www.bilibili.com/video/BV1PE41197md



回文自动机(回文树)

【数据结构】回文树(1):定义、结构以及建立

https://www.bilibili.com/video/BV1r54y1S7C1

https://www.bilibili.com/video/BV1r54y1S7C1

https://www.bilibili.com/video/BV1Ns41177eg



KMP算法

https://www.bilibili.com/video/BV1Pp411f7Uv

KMP算法计算next函数值(教材版,超简单!)

https://www.bilibili.com/video/BV12J411m74v

KMP算法实例详解(易懂)

https://www.bilibili.com/video/BV1S64y1u74P

「天勤公开课」KMP算法易懂版

https://www.bilibili.com/video/BV1jb411V78H



trie字典树

【LeetCode训练营】(字典树)208. Implement Trie (Prefix Tree)

https://www.bilibili.com/video/BV1At411j7C8

STUACM-算法讲堂-字典树trie

https://www.bilibili.com/video/BV1KQ4y1N7Je

算法竞赛入门经典-训练指南+陈锋+字典树

https://www.bilibili.com/video/BV15T4y137o6

高中信息学竞赛字符串算法

https://www.bilibili.com/video/BV1ut411X7F7



AC自动机

0228省选课【AC自动机习题课】

https://www.bilibili.com/video/BV1kE411n79Z

纸喵补完计划 #2 AC 自动机

https://www.bilibili.com/video/BV15J411t7Sy

AC自动机——学会了也不能自动AC

https://www.bilibili.com/video/BV1A4411e7nJ

ac自动机动画演示

ac自动机动画演示_哔哩哔哩_bilibili

洛谷AC自动机演示

洛谷AC自动机演示_哔哩哔哩_bilibili

[算法]轻松掌握ac自动机_6_效果演示

[算法]轻松掌握ac自动机_6_效果演示_哔哩哔哩_bilibili

0222省选课【AC自动机】

0222省选课【AC自动机】_哔哩哔哩_bilibili

[算法]轻松掌握ac自动机_5_code实现

[算法]轻松掌握ac自动机_5_code实现_哔哩哔哩_bilibili

[算法]轻松掌握ac自动机

[算法]轻松掌握ac自动机_哔哩哔哩_bilibili

UESTCACM 每周算法讲堂 AC自动机

UESTCACM 每周算法讲堂 AC自动机_哔哩哔哩_bilibili

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一份C语言的程序代码,可以判断输入的域名是否合法: ```c #include <stdio.h> #include <string.h> int main() { int n; scanf("%d", &n); char domain[100]; while (n--) { scanf("%s", domain); int len = strlen(domain); int dot_count = 0; // 记录点号的个数 int last_dot_pos = -1; // 记录上一个点号的位置 int first_dot_pos = -1; // 记录第一个点号的位置 // 遍历每个字符 for (int i = 0; i < len; i++) { if (domain[i] == '.') // 如果是点号 { dot_count++; if (last_dot_pos == i - 1) // 连续的点号 { printf("N\n"); break; } if (dot_count == 1) { first_dot_pos = i; } if (dot_count > 3) // 点号个数超过3个 { printf("N\n"); break; } last_dot_pos = i; } else if (!(domain[i] >= 'a' && domain[i] <= 'z') && !(domain[i] >= 'A' && domain[i] <= 'Z') && !(domain[i] >= '0' && domain[i] <= '9') && domain[i] != '_') // 非法字符 { printf("N\n"); break; } } if (dot_count < 1 || dot_count > 3) // 点号个数不符合要求 { continue; } char last_part[50]; int last_part_len = strlen(domain) - last_dot_pos - 1; if (last_part_len < 2 || last_part_len > 6) // 最后一部分长度不符合要求 { printf("N\n"); continue; } strncpy(last_part, domain + last_dot_pos + 1, last_part_len); last_part[last_part_len] = '\0'; if (first_dot_pos == -1) // 只有一部分 { if (strlen(domain) < 2 || strlen(domain) > 6) { printf("N\n"); continue; } if (!(domain[0] >= 'a' && domain[0] <= 'z') && !(domain[0] >= 'A' && domain[0] <= 'Z') && !(domain[0] >= '0' && domain[0] <= '9')) // 第一个字符非法 { printf("N\n"); continue; } } else if (last_dot_pos - first_dot_pos < 2) // 中间一部分长度不符合要求 { printf("N\n"); continue; } else { for (int i = first_dot_pos + 1; i < last_dot_pos; i++) { if (domain[i] == '.') // 中间一部分有点号 { printf("N\n"); goto end; } } } printf("Y\n"); end: continue; } return 0; } ``` 该程序会读入一个整数n,表示有n个域名需要判断。然后,程序会循环n次,每次读入一个字符串,判断它是否是合法的域名。如果是合法的,程序会输出"Y";否则,程序会输出"N"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值