通过两个数组字符串。各选取一个字符串元素。使其长度绝对值最大。求最大绝对值
2018-01-09 17:21
330 查看
$s1 = ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"]; $s2 = ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"]; $this->revTest(mxdiflg($s1, $s2), 13); $s1 = ["ejjjjmmtthh", "zxxuueeg", "aanlljrrrxx", "dqqqaaabbb", "oocccffuucccjjjkkkjyyyeehh"]; $s2 = ["bbbaaayddqbbrrrv"]; $this->revTest(mxdiflg($s1, $s2), 10); $s1 = ["ccct", "tkkeeeyy", "ggiikffsszzoo", "nnngssddu", "rrllccqqqqwuuurdd", "kkbbddaakkk"]; $s2 = ["tttxxxxxxgiiyyy", "ooorcvvj", "yzzzhhhfffaaavvvpp", "jjvvvqqllgaaannn", "tttooo", "qmmzzbhhbb"]; $this->revTest(mxdiflg($s1, $s2), 14) ;[code] 我的写法:是通过冒泡将$a1按字符串倒序排。$a2正序排。 function mxdiflg($a1, $a2) { for ($i = 0; $i < count($a1); $i++) { for ($a = $i + 1; $a < count($a1); $a++) { if (strlen($a1[$i]) < strlen($a1[$a])) { $store = $a1[$i]; $a1[$i] = $a1[$a]; $a1[$a] = $store; } } } for ($i = 0; $i < count($a2); $i++) { for ($a = $i + 1; $a < count($a2); $a++) { if (strlen($a2[$i]) > strlen($a2[$a])) { $store = $a2[$i]; $a2[$i] = $a2[$a]; $a2[$a] = $store; } } } return max(abs(strlen($a1[0])-strlen($a2[0])),abs(strlen($a1[count($a1) - 1])-strlen($a2[count($a2)-1]))); } 感觉比较好的写法: function mxdiflg($a1, $a2) { if (empty($a1) || empty($a2)) { return -1; } $a2 = array_map('strlen', $a2); $a1 = array_map('strlen', $a1); return max(abs(min($a2) - max($a1)), abs(max($a2)-min($a1))); }[/code]
相关文章推荐
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组 最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上
- 求一个数组中两个元素的最大差值
- 交换两个长度均为n的无序数组的元素,使两数组元素的和之差的绝对值最小
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 1,随机一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- php 求一个无序数组经过排列后任意两个相邻元素之差的最大值(算法)
- java里如何实现两个等长度的字符串数组有多少个元素相同(从最左边开始,一旦遇到不同元素则跳出计数)
- 3.输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 华为机试题:输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- System.Collections.ArrayList类是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度。
- 已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离
- 数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小,数组中的数的取值范围是0<x<100,元素个数也是大于0, 小于100 。
- 通过两个字符串数组,求其中最大相同项(java demo)
- 求一个数组中满足一定条件的两个元素的最大差值
- 数组a中每个元素包含两个值第一个是整型第二个是字符串写一个sort函数以第一个值为键按从小到大排序