<script>
function fn(str){
var arr = str.split("");
alert(arr);
var arr1 = [];
var arr2 = [];
var str ={};
for(var i=0;i<arr.length;i++){
var sum="";
for(var j=i;j<arr.length;j++){
if(i!=j){
str=arr[i]+arr[j];
arr1.push(str);
}
console.log(arr1);
sum = sum+arr[j];
arr2.push(sum);
console.log(arr2);
}
}
arr2=arr1.concat(arr2);
console.log(arr2);
arr2=arr2.sort();
alert(arr2[arr2.length-1]);
}
fn("test");
</script>
穷举法,有点浪费空间和时间,但是,比较容易理解;
首先,将传入的字符串分割成数组,然后架构一个两层循环,有两种字串截取方式,第一种,就是当i不等于j时,令 str=arr[i]+arr[j];放入数组arr1,如例子“test”,即将字串te,ts,tt,es,et,st放入数组arr1中,第二种, 就是将字符串连接拼接,中间无相隔,sum = sum+arr[j];放入数组arr2中。即字符串t,te,tes,test,e,es,est,s,st,t;然后用concat数组连接,将他们连接成一个数组,用sort排序将字符串排序,也就是它的字典序,返回排序后的数组的最后一个值,也就是字典序的最大子序列,完成题目。
emmmm。。。。。。我暂时只能想出来这个方法,如果以后有看到好的方法,会再来补充,加油!