将一个字符串数组中的字符串拼接出来,使得字典序最小
2017-08-22 17:03
330 查看
此题不能直接将字符串排序直接拼接,而是要自己编写sort中的cmp函数,找到a+b与b+a的最小
JAVA程序:
package problems_2017_08_21;
import java.util.Arrays;
import java.util.Comparator;
public class Problem_04_LowestLexicography {
public static class MyComparator implements Comparator<String> {
@Override
public int compare(String a, String b) {
return (a + b).compareTo(b + a);
}
}
public static String lowestString(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
Arrays.sort(strs, new MyComparator());
String res = "";
for (int i = 0; i < strs.length; i++) {
res += strs[i];
}
return res;
}
public static void main(String[] args) {
String[] strs1 = { "jibw", "ji", "jp", "bw", "jibw" };
System.out.println(lowestString(strs1));
String[] strs2 = { "ba", "b" };
System.out.println(lowestString(strs2));
}
}
C++程序:
#include<iostream>
#include<string>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
bool Compare(string a,string b)
{
if((a+b).compare(b+a)>0)
return false;
else true;
}
string lowstring(string *a,int n)
{
if(a==NULL||n==0)
return 0;
sort(a,a+n,Compare);
string result="";
for(int i=0;i<n;i++)
result+=a[i];
return result;
}
int main()
{
string a[2]={"a","ab"};
cout<<lowstring(a,2)<<endl;
system("pause");
return 0;
}
JAVA程序:
package problems_2017_08_21;
import java.util.Arrays;
import java.util.Comparator;
public class Problem_04_LowestLexicography {
public static class MyComparator implements Comparator<String> {
@Override
public int compare(String a, String b) {
return (a + b).compareTo(b + a);
}
}
public static String lowestString(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
Arrays.sort(strs, new MyComparator());
String res = "";
for (int i = 0; i < strs.length; i++) {
res += strs[i];
}
return res;
}
public static void main(String[] args) {
String[] strs1 = { "jibw", "ji", "jp", "bw", "jibw" };
System.out.println(lowestString(strs1));
String[] strs2 = { "ba", "b" };
System.out.println(lowestString(strs2));
}
}
C++程序:
#include<iostream>
#include<string>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
bool Compare(string a,string b)
{
if((a+b).compare(b+a)>0)
return false;
else true;
}
string lowstring(string *a,int n)
{
if(a==NULL||n==0)
return 0;
sort(a,a+n,Compare);
string result="";
for(int i=0;i<n;i++)
result+=a[i];
return result;
}
int main()
{
string a[2]={"a","ab"};
cout<<lowstring(a,2)<<endl;
system("pause");
return 0;
}
相关文章推荐
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小
- 拼接字符串数组使字典序最小
- 【codeforces 724D】【贪心】 Dense Subsequence 【一个字符串,按照一定的区间要求从中选出一些字符,使得这串字符的sort后字典序最小】
- 字符串数组中所有字符串组成一个字典序最小的字符串
- 拼接最小字典序 --字符串数组
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型数组排序,使得按序拼接数组各元素得到的值最小。
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。
- 从三个排好序的整数数组中分别选一个元素,使得这三个元素的最大差最小
- fafu - 1003 数字接龙-sort cmp函数(若干个字符串拼接成一个字典序最大的字符串)
- 数据结构与算法分析笔记与总结(java实现)--字符串9:拼接最小字典序练习题
- 编程题:输入一个正整数数组,将他们拼接成一个数,输出拼接出所有数字中最小的一个
- 堆的数据结构能够使得堆顶总是维持最大(对于大根堆)或最小(对于小根堆),给定一个数组,对这个数组进行建堆,则平均复杂度是多少?如果只是用堆的 push 操作,则一个大根堆依次输入 3,7,2,4,1,5,8 后,得到的堆的结构示意图是下述图表中的哪个?
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 用SQL将查询出来的多列的值拼接成一个字符串
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 将数组中的元素拼接为一个字符串
- 把数组按指定的格式拼接成一个字符串
- 在js代码中,拼接的字符串dom中带有小于号(<),使得拼出来的dom显示异常
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- 用SQL将查询出来的多列的值拼接成一个字符串