
題目.jpg
<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>
窮舉法,有點(diǎn)浪費(fèi)空間和時(shí)間,但是,比較容易理解;
首先,將傳入的字符串分割成數(shù)組,然后架構(gòu)一個(gè)兩層循環(huán),有兩種字串截取方式,第一種,就是當(dāng)i不等于j時(shí),令 str=arr[i]+arr[j];放入數(shù)組arr1,如例子“test”,即將字串te,ts,tt,es,et,st放入數(shù)組arr1中,第二種, 就是將字符串連接拼接,中間無(wú)相隔,sum = sum+arr[j];放入數(shù)組arr2中。即字符串t,te,tes,test,e,es,est,s,st,t;然后用concat數(shù)組連接,將他們連接成一個(gè)數(shù)組,用sort排序?qū)⒆址判?,也就是它的字典序,返回排序后的?shù)組的最后一個(gè)值,也就是字典序的最大子序列,完成題目。
emmmm。。。。。。我暫時(shí)只能想出來(lái)這個(gè)方法,如果以后有看到好的方法,會(huì)再來(lái)補(bǔ)充,加油!