题目1:

​3142. 判断矩阵是否满足条件​

给你一个大小为 ​​m x n​​​ 的二维矩阵 ​​grid​​​ 。你需要判断每一个格子 ​​grid[i][j]​​ 是否满足:

  • 如果它下面的格子存在,那么它需要等于它下面的格子,也就是 ​​grid[i][j] == grid[i + 1][j]​​ 。
  • 如果它右边的格子存在,那么它需要不等于它右边的格子,也就是 ​​grid[i][j] != grid[i][j + 1]​​ 。

如果 所有 格子都满足以上条件,那么返回 ​​true​​​ ,否则返回 ​​false​​ 。

示例 1:

输入:grid = [[1,0,2],[1,0,2]]

输出:true

解释:

网格图中所有格子都符合条件。

示例 2:

输入:grid = [[1,1,1],[0,0,0]]

输出:false

解释:

同一行中的格子值都相等。

示例 3:

输入:grid = [[1],[2],[3]]

输出:false

解释:

同一列中的格子值不相等。

 提示:

  • ​1 <= n, m <= 10​
  • ​0 <= grid[i][j] <= 9​

题解:

遍历数组,根据题目条件判断。

java代码:

class Solution {
    public boolean satisfiesConditions(int[][] grid) {
        int m = grid.length;
        int n = grid[0].length;

        for(int i=0;i<m;i++) {
            for(int j=0;j<n;j++) {
                if(i+1<m && grid[i][j]!=grid[i+1][j]) {
                    return false;
                }
                if(j+1<n && grid[i][j]==grid[i][j+1]) {
                    return false;
                }
            }
        }
        return true;

    }
}

go代码:

func satisfiesConditions(grid [][]int) bool {
    m := len(grid)
    n := len(grid[0])

    for i :=0; i<m;i++ {
        for j :=0; j<n; j++ {
            if i+1<m && grid[i][j] != grid[i+1][j] {
                return false
            }
            if j+1<n && grid[i][j] == grid[i][j+1] {
                return false
            }
        }
    }

    return true
}

题目2:

​3136. 有效单词​

有效单词 需要满足以下几个条件:

  • 至少 包含 3 个字符。
  • 由数字 0-9 和英文大小写字母组成。(不必包含所有这类字符。)
  • 至少 包含一个 元音字母 
  • 至少 包含一个 辅音字母 

给你一个字符串 ​​word​​​ 。如果 ​​word​​​ 是一个有效单词,则返回 ​​true​​​ ,否则返回 ​​false​​ 。

注意:

  • ​'a'​​​、​​'e'​​​、​​'i'​​​、​​'o'​​​、​​'u'​​ 及其大写形式都属于 元音字母 
  • 英文中的 辅音字母 是指那些除元音字母之外的字母。

示例 1:

输入:word = "234Adas"

输出:true

解释:

这个单词满足所有条件。

示例 2:

输入:word = "b3"

输出:false

解释:

这个单词的长度少于 3 且没有包含元音字母。

示例 3:

输入:word = "a3$e"

输出:false

解释:

这个单词包含了 ​​'$'​​ 字符且没有包含辅音字母。

提示:

  • ​1 <= word.length <= 20​
  • ​word​​​ 由英文大写和小写字母、数字、​​'@'​​​、​​'#'​​​ 和 ​​'$'​​ 组成。

题解:

首先,我们可以判断给定的单词长度是否大于等于 3,其次我们需要通过一次遍历来判断是否包含元音字母、辅音字母以及除去数字和大小写字母以外的其他字母。

JAVA代码:

class Solution {
    public boolean isValid(String word) {
        if(word.length()<3) {
            return false;
        }

        boolean hasVowel = false;//是否有元音
        boolean hasConsonant = false; //是否有辅音

        List<Character> vowels = new ArrayList<>();
        vowels.add('a');
        vowels.add('e');
        vowels.add('i');
        vowels.add('o');
        vowels.add('u');
        vowels.add('A');
        vowels.add('E');
        vowels.add('I');
        vowels.add('O');
        vowels.add('U');
        for(char c : word.toCharArray()) {
            if(!Character.isLetter(c) && !Character.isDigit(c)) {
                return false;
            }

            if(Character.isLetter(c)) {
                if(vowels.contains(c)) {
                    hasVowel=true;
                }else {
                    hasConsonant = true;
                }
            }
        }

        return hasVowel&&hasConsonant;
    }
}

go代码:

func isValid(word string) bool {
    if len(word)<3 {
        return false
    }

    hasVowel := false
    hasConsonant := false

    for _,c := range word {
        if !unicode.IsLetter(c) && !unicode.IsDigit(c) {
            return false
        }

        if unicode.IsLetter(c) {
            ch := unicode.ToLower(c)
            if ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' {
                hasVowel = true
            }else {
                hasConsonant = true
            }
        }
    }

    return hasVowel && hasConsonant
}

题目3:

​3120. 统计特殊字母的数量 I​

给你一个字符串 ​​word​​​。如果 ​​word​​ 中同时存在某个字母的小写形式和大写形式,则称这个字母为 特殊字母 。

返回 ​​word​​ 中 特殊字母 的数量。

示例 1:

输入:word = "aaAbcBC"

输出:3

解释:

​word​​​ 中的特殊字母是 ​​'a'​​​、​​'b'​​​ 和 ​​'c'​​。

示例 2:

输入:word = "abc"

输出:0

解释:

​word​​ 中不存在大小写形式同时出现的字母。

示例 3:

输入:word = "abBCab"

输出:1

解释:

​word​​​ 中唯一的特殊字母是 ​​'b'​​。

提示:

  • ​1 <= word.length <= 50​
  • ​word​​ 仅由小写和大写英文字母组成。

题解:

用哈希集合存储字符串 word 中的所有字符,然后遍历 26 个字母,对于每个字母判断大写形式和小写形式是否都在哈希集合中。如果一个字母的大写形式和小写形式都在哈希集合中,则该字母是特殊字母,否则该字母不是特殊字母。

java代码:

class Solution {
    public int numberOfSpecialChars(String word) {
        Set<Character> set = new HashSet<Character>();
        int length = word.length();
        for (int i = 0; i < length; i++) {
            set.add(word.charAt(i));
        }
        int count = 0;
        for (char upper = 'A', lower = 'a'; upper <= 'Z'; upper++, lower++) {
            if (set.contains(upper) && set.contains(lower)) {
                count++;
            }
        }
        return count;
    }
}

go代码:

func numberOfSpecialChars(word string) int {
    charSet := make(map[rune]bool)
    for _,c := range word {
        charSet[c] = true
    }

    count := 0
    for upper,lower := 'A', 'a'; upper<='Z'; upper, lower = upper+1, lower+1 {
        if charSet[upper] && charSet[lower] {
            count++
        }
    }
    return count

}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐