字符串练习题(五):拼接最小字典序

对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。

给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。

测试样例:

["abc","de"],2
"abcde"
public class Prior {
    public String findSmallest(String[] strs, int n) {
        // write code here
        Arrays.sort(strs, new Comparator<String>() {

            @Override
            public int compare(String o1, String o2) {
                // TODO 自动生成的方法存根
                String s1=o1+o2;
                String s2=o2+o1;
                return s1.compareTo(s2);
            }
        });

        String res="";
        for(int i=0;i<n;i++){
            res+=strs[i];

        }
        return res;
    }
}
时间: 2024-10-01 07:13:40

字符串练习题(五):拼接最小字典序的相关文章

拼接最小字典序

转载请标明出处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

python编程题-拼接最小字典序

题目来源:牛客网 对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的. 给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串. 测试样例: ["abc","de"],2 "abcde" python 代码 # -*- coding:utf-8 -*- class Prior:     def findSmallest(self, strs, n):         # write 

随手练——拼接最小字典序

没有找到OJ题目. 第一眼想到的一般都是按字典序从头到尾依次. b,ba按这个思想排出来,是bba,但其实最小的是bab,就要改一下比较策略了,改成拼接之后,比较谁小. int cmp(string s1,string s2) { return s1 + s2 < s2 + s1 ? 1 : 0; } 完成代码: #include <iostream> #include <string> #include <algorithm> #include <vect

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

https://leetcode.com/problems/remove-duplicate-letters/?tab=Description 看了Discuss的解答.是用了递归,先找出第一个字符,然后去掉这个字符并且递归. 但是如果只有26个字母,其实是不是可以这样. 先遍历一遍,看到各个字母出现的次数. 然后第二遍遍历,如果一个字母,后面不再出现,或者后面不出现比自己小的字母,那么就可以放在结果里面了. 复杂度也是 O(n),常数系数是26.

UVa 1584 Circular Sequence(环形串最小字典序)

题意  给你一个环形串   输出它以某一位为起点顺时针得到串的最小字典序 直接模拟   每次后移一位比较字典序即可  注意不能用strcpy(s+1,s)这样后移  strcpy复制地址不能有重叠部分 #include<cstdio> #include<cstring> using namespace std; const int N = 150; char s[N], ans[N], c; int t, l; int main() { scanf ("%d",

poj 2337 欧拉回路按照最小字典序输出+注意为了按最小字典序怎么处理邻接表

http://poj.org/problem?id=2337 WA了好久,昨晚1点多睡不着写的,狂WA,当时是因为用邻接矩阵存储,比如aba,aa只能存下一个,这个之前还没遇到过,今天才注意到--邻接矩阵无法存储平行边, 关于欧拉回路判断看我另几篇日志或者看我的欧拉总结 再贴个输出欧拉回路的模板 其中,参数u是起点,注意如果是输出欧拉路径的话,u必须是出度比入度大一的那个点,如果输出欧拉回路,随便按要求找个就行 void euler(int u) { for(int i=head[u];i!=-

3532: [Sdoi2014]Lis 最小字典序最小割

3532: [Sdoi2014]Lis Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 865  Solved: 311[Submit][Status][Discuss] Description 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案.如果有多种方案,请输出将删去项的附加属性排序之后,字典序最小的一种. 这题难点在如何求一组最小字典序最小的最小

Mac配置Python开发环境并实现简单的字符串和整数拼接

首先用HomeBrew安装一下Python的3.4版本.苹果自带的Python,开发的话还是算了吧.在终端里输入下面这行命令. brew install python3 接下来打开Sublime,语法修改为Python.输入 print ('Hello World') 注意,Python3中,print函数需要加上括号了.对于经常使用C,Java的新手,可能不太习惯不用加分号. 写完这行代码之后,打开终端,输入以下代码: python xxx.py 注意这里的xxx是Python文件的完整路径.