LeetCode刷题记---2047/1995/2022

(该模块仅为记录本人的leetcode的练习记录)

2047.句子中的有效单词数(easy)

在这里插入图片描述
解题思路:直接暴力,使用split按照空格拆分,然后按照题意判断是否符合条件即可

代码:

package LeetCode.Code2022.January;

public class Solution2047 {
    public int countValidWords(String sentence) {

        int ans = 0;
        for (String s : sentence.split(" ")) {

            int connectP = 0;
            int punctuation = 0;
            boolean flag = true;
            if (s.length() < 1) {
                continue;
            }
            if (s.charAt(0) == '-' || s.charAt(s.length() - 1) == '-') {
                continue;
            }
            for (int i = 0;i < s.length(); i++) {
                char ch = s.charAt(i);
                if (ch == '-') {
                    connectP++;
                    if (!(Character.isLetter(s.charAt(i - 1))
                            && Character.isLetter(s.charAt(i + 1)))){
                        flag = false;
                        break;
                    }
                } else if (ch == '!' || ch == '.' || ch == ' ' || ch == ',') {
                    punctuation++;
                } else if (Character.isDigit(ch)) {
                    flag = false;
                    break;
                }
                if (punctuation == 1 && i != s.length() - 1) {
                    flag = false;
                    break;
                }
                if (connectP > 1 || punctuation > 1) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                ans++;
            }
        }
        return ans;

    }
}

1995.统计特殊四元组(easy)

在这里插入图片描述

解题思路:由于看到后面的数据量(4 <= nums.length <= 50,1 <= nums[i] <= 100)所以直接暴力枚举了。也想到了用hashmap进行优化到n^3时间复杂度,但没写,官方的解题思路倒是很强。

1995.统计特殊四元组官方题解

代码:

package LeetCode.Code2022.January;

public class Solution1995 {
    public int countQuadruplets(int[] nums) {

        int ans = 0;
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                for (int z = j + 1; z < nums.length; z++) {
                    for (int k = z + 1; k < nums.length; k++) {
                        if (nums[i] + nums[j] + nums[z] == nums[k]) {
                            ans++;
                        }
                    }
                }
            }
        }
        return ans;
        
    }
}

2022.将一维数组转变成二维数组(easy)

在这里插入图片描述

代码:

package LeetCode.Code2022.January;

public class Solution2022 {
    public int[][] construct2DArray(int[] original, int m, int n) {
        int len = original.length;
        if (len != m * n) {
            return new int[][]{};
        }
        int [][]arr = new int[m][n];
        int z = 0;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j] = original[z++];
            }
        }
        return arr;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值