Leetcode PHP題解--D25 500. Keyboard Row

500. Keyboard Row

題目連接

500. Keyboard Rowphp

題目分析

給定一個字符串數組,返回那些所出現的字母在QWERTY鍵盤中同一行的字符串。數組

例如,單詞hello中,字母hl在鍵盤的第二行(或者中間那一行),剩餘字母eo在第一行。故排除之。
再如,Dalas中,全部字母都在中間那一行,則返回它。函數

思路

個人思路是,把鍵盤中每一行出現的字母存進3個數組中(由於有3行),將每一個字符串分割成數組,判斷該數組與每一行字母數組是否有差集。若是分散在不一樣行,則一定會在與某一行有差。用array_filter函數過濾這些有差的字符串便可。.net

最終代碼

<?php
class Solution {
    function findWords($words) {
            return array_filter($words, function($val){
                        $val = array_unique(str_split(strtolower($val)));
                                    $q = ['q','w','e','r','t','y','u','i','o','p'];
                                                $a = ['a','s','d','f','g','h','j','k','l'];
                                                            $z = ['z','x','c','v','b','n','m'];
                                                                        
                                                                                    return !(array_diff($val,$q) && array_diff($val,$a)&&
                                                                                                    array_diff($val,$z));
                                                                                                            });
                                                                                                                }
                                                                                                                }
若以爲本文章對你有用,歡迎用[愛發電](https://afdian.net/@skys215)資助。
相關文章
相關標籤/搜索