一个字符串数组,{,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;
}