当前位置:网站首页>LeetCode·1163.按字典序排在最后的子串·最小表示法
LeetCode·1163.按字典序排在最后的子串·最小表示法
2022-08-03 16:30:00 【小迅想变强】
链接:https://leetcode.cn/problems/last-substring-in-lexicographical-order/solution/by-xun-ge-v-xab4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目
示例
思路
解题思路
最小表示法
关于最小表示法详细介绍可看链接 最小表示法详解
- i = 0,j = 1,k = 0,表示从i开始k长度和从j开始k长度的字符串相同(i,j表示当前判断的位置)
- 当str[i] == str[j]时,根据上面k的定义,需要进行k+1操作
- 当str[i] > str[j]时,i位置比j位置上字典序要大,那么不能使用j作为开头了,我们要将j向后移动,移动多少呢?因为i开头和j开头的有k个相同的字符,那么就执行 j = j + k +1
- 相反str[i] < str[j]时,执行:i = i + k +1
- 若滑动后i == j,因为两个指针指向的内容都一样,则随意选一个加一以保证比较的两个字符串不同,并且重新开始,清空相同长度 k = 0
暴力求解
暴力枚举字符串每一个元素,判断元素大小
- 当元素大于最大元素时,保存下标,并且设置为最大元素
- 当元素等于最大元素时,判断之后字符字典序大小,保存字典序大的下标
- 当元素小于最大元素时,不处理
这里有个小技巧,当每次都判断之后字符字典序大小时,很显然会超时,但是限制一下每次判断之后字符的长度就不会了,限制长度这里设为20
代码
最小表示法
char * lastSubstring(char * s){
int n = strlen(s);
//最小表示法
int k = 0, i = 0, j = 1;
while (k < n && i+k < n && j+k < n) {
if (s[i + k] == s[j + k]) {
k++;
} else {
if(s[i + k] >= s[j + k])
{
j = j + k + 1;
}else
{
i = i + k + 1;
}
if (i == j) i++;
k = 0;
}
}
i = fmin(i, j);
return s+i;
}
作者:xun-ge-v
链接:https://leetcode.cn/problems/last-substring-in-lexicographical-order/solution/by-xun-ge-v-xab4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
暴力求解
char * lastSubstring(char * s){
int len = strlen(s);
int des = 0;
char maxCh = s[0];
for (int i = 1; i < len; i++) {//枚举每一个元素
if (s[i] > maxCh) {//保存最大值
maxCh = s[i];
des = i;
} else if (s[i] == maxCh) {//当元素等于最大元素时,判断之后字符字典序大小,保存字典序大的下标
des = (strncmp(s+des, s+i, 20) >= 0) ? des : i;
}
}
return s+des;
}
作者:xun-ge-v
链接:https://leetcode.cn/problems/last-substring-in-lexicographical-order/solution/by-xun-ge-v-xab4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
边栏推荐
- 如何设计大电流九线导电滑环
- Windows 事件查看器记录到 MYSQL
- Why do I strongly recommend using smart async?
- 最强分布式锁工具:Redisson
- [Unity Starter Plan] Making RubyAdventure01 - Player Creation & Movement
- 2年开发经验去面试,吊打面试官,即将面试的程序员这些笔记建议复习
- AI+BI+Visualization, Deep Analysis of Sugar BI Architecture
- C专家编程 第1章 C:穿越时空的迷雾 1.6 它很棒,但它符合标准吗
- 组件通信--下拉菜单案例
- WordPress 5.2.3 更新,升级出现请求超时的解决方法
猜你喜欢
QT QT 】 【 to have developed a good program for packaging into a dynamic library
leetcode-693.交替位二进制数
MATLAB | 七夕节快到了,还不给朋友安排上这个咕呱小青蛙?
从零开始搭建MySQL主从复制架构
Understand the recommendation system in one article: Outline 02: The link of the recommendation system, from recalling rough sorting, to fine sorting, to rearranging, and finally showing the recommend
机器人开发--Universal Scene Description(USD)
Detailed ReentrantLock
2年开发经验去面试,吊打面试官,即将面试的程序员这些笔记建议复习
leetcode:202. 快乐数
Why do I strongly recommend using smart async?
随机推荐
生产环境如何删除表呢?只能在SQL脚本里执行 drop table 吗
设置海思芯片MMZ内存、OS内存详解
C专家编程 第1章 C:穿越时空的迷雾 1.10 “安静的改变”究竟有多少安静
产品-Axure9英文版,轮播图效果
新版本 MaxCompute 的SQL 中支持的 EXTRACT 函数有什么作用?
请问下这个hologres维表是被缓存了么?怎么直接Finished了
SwinIR实战:详细记录SwinIR的训练过程
黄致绮 荣获第六季完美童模全球总决赛 全国总冠军
自动化部署+整合SSM项目
uniapp隐藏导航栏和横屏显示设置
使用.NET简单实现一个Redis的高性能克隆版(一)
高效的组织信息共享知识库是一种宝贵的资源
C专家编程 第1章 C:穿越时空的迷雾 1.9 阅读ANSI C标准,寻找乐趣和裨益
C语言04、操作符
华为、联想、北汽等入选工信部“企业数字化转型和安全能力提升”首批实训基地
使用Stream多年,collect还有这些“骚操作”?
测试测试测试
Small Tools (4) integrated Seata1.5.2 distributed transactions
纯纯粹粹纯纯粹粹
To add digital wings to education, NetEase Yunxin released the overall solution of "Internet + Education"