字符串去重并且获得最小字典序的我的一个思路

https://leetcode.com/problems/remove-duplicate-letters/?tab=Description

看了Discuss的解答。是用了递归,先找出第一个字符,然后去掉这个字符并且递归。

但是如果只有26个字母,其实是不是可以这样。

先遍历一遍,看到各个字母出现的次数。

然后第二遍遍历,如果一个字母,后面不再出现,或者后面不出现比自己小的字母,那么就可以放在结果里面了。

复杂度也是 O(n),常数系数是26。

时间: 2024-11-10 01:30:33

字符串去重并且获得最小字典序的我的一个思路的相关文章

拼接最小字典序

转载请标明出处http://www.cnblogs.com/haozhengfei/p/63b2460bceae42e55f0c2d150bde663b.html 拼接最小字典序 拼接最小字典序练习 第8节 拼接最小字典序练习题 对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的. 给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串. 测试样例: ["abc","de"],2 "abcde

[PHP]算法-拼接最小字典序的实现

拼接最小字典序: 给定一个字符串类型的数组strs,请找到一种拼接顺序,使得将所有字符串拼接起来组成的大字符串是所有可能性中字典顺序最小的并放回这个大字符串. 思路: 1.字典序,12345这五个数,按不同的顺序排列,所有的排列中最前面的是12345,最后面的是 54321. 2.使用比较函数usort(arr,'costomcomp'),自定义比较大小的函数,costomcomp(a,b) return a+b > b+a 3.str_split 单个字符串转数组 4.字符转ascii ord

c++实现哈夫曼树,哈夫曼编码,哈夫曼解码(字符串去重,并统计频率)

#include <iostream> #include <iomanip> #include <string> #include <cstdlib> using namespace std; //定义哈夫曼树存储结构 typedef struct { char data; //存放结点数据 int weight; //记录结点权值 int parent, lchild, rchild; }HTNode, * HuffmanTree; //哈夫曼编码存储表示

js 数组&amp;字符串 去重

Array.prototype.unique1 = function() { var n = []; //一个新的临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; } Array.prototype.unique2 = funct

2015.4.25-2015.5.1 字符串去重,比例圆设计,中奖机和canvas橡皮擦效果等

1.字符串去重,html模板取值 2.javascript正则表达式之$1...$9 3.jquery插件 4.返回上一页并刷新 解决方法: <a href ="javascript:location.href=document.referrer;"> 5.用webstorm写的手机网站 怎样能用手机预览呢? 解决方法:布署到wamp,xamp,iis上,然后用浏览器生成二维码,扫一扫就可以打开.假如是javaweb项目,挂上tomcat手机直接访问你机子的ip. 6.比例

C# 实现字符串去重

方法一 注:需要.net 3.5框架的支持 string s = "101,102,103,104,105,101,102,103,104,105,106,107,101,108"; s = string.Join(",", s.Split(',').Distinct().ToArray()); 方法二 class Program { static void Main(string[] args) { string result=""; stri

字符串去重及统计各字符字数

突然看到有统计字符串的各个数量和去重的问题,心一想就试了下哈.同时也顺带把数组自带的函数也拿出来,就当作看看记忆下吧 $a = 'eeefffkkkhjk'; /***********统计字符串中各个字符出现次数************/ $total = array(); for($i = 0;$i < strlen($a);$i++){ if(isset($total[$a[$i]])) { $total[$a[$i]] +=1; } else { $total[$a[$i]] = 1; }

JS实现字符串去重,数组去重

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>去重</title> 6 </head> 7 <body> 8 <script type="text/javascript"> 9 /*数组去重*/ 10 function quch

CareerCup之1.3字符串去重

[题目] 原文: 1.3 Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not. FOLLOW UP Write the test cases for