一個字元串數組,{,a,b,1,110,111,13,2,23,22,23442,2645,345,34567,34,3487,5643,64545454,56457,7654564} 寫一個函數,返回結果為{1,2,34,5643,64545454,56457,7654564} 規律,數字判斷,如 ...
一個字元串數組,{,a,b,1,110,111,13,2,23,22,23442,2645,345,34567,34,3487,5643,64545454,56457,7654564}
寫一個函數,返回結果為{1,2,34,5643,64545454,56457,7654564}
規律,數字判斷,如果一個數字包含另一個數字,返回較小的字元串,比如,123,12 則返回12
//參數是數組
function findRealCode(str) {
var arry = new Array();
var m = 0;
var at= new Array();//返回的
arry = Narry(str);//排出非數字字元
var ln = findLength(arry);//最大長度,可以迴圈這麼多次
for (var k = 0; k < ln; ) {
var n = 0;//作為數組自增變數
var sm0 = findSmall(arry);// 取得最小位數的元素
var temp = new Array(); // 參數組,用於迭代
k = findLength(sm0);//本次元素的長度
for (var i = 0; i < sm0.length; i++) {//把最小的元素放到返回數組中
at[m] = sm0[i];
m++;
}
for (var j = 0; j < arry.length; j++) {
var a = 0;
for (var i = 0; i < sm0.length; i++) {
if (arry[j].indexOf(sm0[i]) == -1 && arry[j].length != sm0[i].length) {//不包含
a++;//不包含就加1
} else {
break;
}
}
if (a == sm0.length) {//該元素不包含最小元素數組就存入參數組
temp[n] = arry[j];
n++;
}
}
if (temp.length == 0) {//如果參數組沒有數據了,說明已經迭代完所有的元素了
break;
}
arry = temp;//傳入迭代數組,進行下一次迭代
}
return at;
}
//獲取數組中字元串最大長度
function findLength(str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (IsNum(str[i])) {
if (len < str[i].length) {
len = str[i].length;
}
}
}
return len;
}
//獲取數組中字元串最小長度的字元串數組,可能有多個字元串長度相等的元素
function findSmall(str) {
var len = str[0];
for (var i = 0; i < str.length; i++) {//先找到其中一個
if (IsNum(str[i])) {
if (len.length > str[i].length) {
len = str[i];
}
}
}
var arr = new Array();
var n = 0;
arr[n] = len;
n++;
for (var i = 0; i < str.length; i++) {
if (IsNum(str[i])) {
if (len.length == str[i].length && len != str[i]) {
arr[n] = str[i];
n++;
}
}
}
return arr;
}
//判斷一個小字元串是否與第二個大字元串前段一一匹配,s1是小字元串s2是大字元串
function IsContain(s1, s2) {
var l = 0;
for (var i = 0; i < s1.length; i++) {
if (s1[i] != s2[i]) {
return false;
} else {
l++;
}
}
if (l == s1.length) {
return true;
}
}
//判斷字元串是否為純數字
function IsNum(str) {
var r = /^\d+$/;
if (r.test(str)) {
return true;
} else {
return false;
}
}
//排出其他字元,只保留數字
function Narry(str) {
var arr = new Array();
var n = 0;
for (var i = 0; i < str.length; i++) {
if (IsNum(str[i])) {
arr[n] = str[i];
n++;
}
}
return arr;
}