乐趣区

Leetcode PHP题解–D8 832. Flipping an Image

832. Flipping an Image
题目链接
832. Flipping an Image
题目分析
题目要求把一个只有 0 和 1 的二维数组中的 0 和 1 取反变为 1 和 0。即 1 变 0,0 变 1。
且需要把每行数据倒序过来。
思路
今天我尝试换一种方法描述思路。
输入是一个二维数组,那么我们需要先降为一维。这个可以用 foreach 完成。
接下来需要完成替换。我本来想用取反操作符完成的,但是如果开头为 1 的话,需要补 0。
我懒得补 0,所以我用 implode 先转换成字符串了。
str_replace([‘0′,’1′,’2’],[‘2′,’0′,’1’],implode(”,$row));
这里我先把 0 换成 2,1 换成 0,再把 2 换成 1 的。
如果直接把 0 替换成 1,1 替换成 0 的话,最后会全 0。因为他是先完成第一个替换对,再重新遍历字符串替换第二个替换对的。
再用 str_split 把字符串变会数组。
最后,用 array_reverse 把数组顺序倒转过来即可。
当然,也可以先用 strrev 先反转字符串,再 str_split。
这样就完成了每一行的处理。
最终代码
<?php
class Solution {
function flipAndInvertImage($A) {
$flipped = [];
foreach($A as $row){
$flipped[] = array_reverse(str_split(str_replace([‘0′,’1′,’2’],[‘2′,’0′,’1’],implode(”,$row))));
}
return $flipped;
}
}
若觉得本文章对你有用,欢迎用爱发电资助。

退出移动版