对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。
给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。
测试样例:["abc","de"],2"abcde"
python
代码# -*- coding:utf-8 -*-
class Prior:
def findSmallest(self, strs, n):
# write code here
resstr = ""
for i in xrange(1,len(strs)):
for j in xrange(0,i):
if(strs[i]+strs[j])<(strs[j]+strs[i]):
strs[i],strs[j] = strs[j],strs[i]
return ''.join(strs)
shell实现
代码#/bin/bash
#by xianwei
#2017-9-4
cat <
题目
对于一个给定的字符串数组,请找到一种拼接顺序,使所有小字符串拼接成的大字符串是所有可能的拼接中字典序最小的。
给定一个字符串数组strs,同时给定它的大小,请返回拼接成的串。
测试样例:
["abc","de"],2
"abcde"
EOF
a=("kid" "yqt" "i" "k")
for((i=0;i<${#a[*]};i++))
do
for((j=0;j
do
if [[ "${a[$i]}${a[$j]}" < "${a[$j]}${a[$i]}" ]]
then
tmp=${a[$i]}
echo $tmp
a[$i]=${a[$j]}
a[$j]=$tmp
fi
done
done
echo ${a[*]}
C++实现
代码class Prior {
public:
string findSmallest(vector strs, int n) {
// write code here
string A;
for (int i = 0; i < strs.size();i++)
{
for (int j = i; j < strs.size(); j++)
{
if ((strs[i] + strs[j])>(strs[j] + strs[i]))//假如k+kid > kid +k,就交换
swap(strs[i],strs[j]);
}
}
for (int i = 0; i < strs.size(); i++)
{
A = A + strs[i];
}
return A;
}
};