(该模块仅为记录本人的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时间复杂度,但没写,官方的解题思路倒是很强。
代码:
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;
}
}