Java每日一练(20230313)
- 游戏开发
- 2025-08-19 17:30:01

目录
1. 字符串统计 ★
2. 单词反转 ★★
3. 俄罗斯套娃信封问题 ★★★
🌟 每日一练刷题专栏
C/C++ 每日一练 专栏
Python 每日一练 专栏
Java 每日一练 专栏
1. 字符串统计
编写一个程序,对于输入的一段英语文本,可以统计:
1、该文本中有多少英语单词; 2、该文本中有多少不同的英语单词。
如,输入 I am a good student. I am in Zhengzhou. 则可以统计出有9个英语单词、7个不同的英语单词。
代码:
import java.util.HashMap; import java.util.Map; public class Tee { public static String formatInput(String input) { if (input == null) { return null; } return input.replaceAll("[.|;|\\?]", " "); } public static Map<String, Integer> countWords(String input) { Map<String, Integer> result = new HashMap<String, Integer>(); if (input == null || input.length() == 0) { return result; } String[] split = input.split(" "); if (split == null || split.length == 0) { return result; } for (String value : split) { if (result.containsKey(value)) { result.put(value, result.get(value) + 1); } else { result.put(value, 1); } } return result; } public static void main(String[] args) { String value = "I am a good student.I am in Zhengzhou.Ha?"; String format = formatInput(value); System.out.println(format); Map<String, Integer> r = countWords(format); System.out.println(r.toString()); } }原题中用了Map,HashMap,以下代码d只用数组即可:
public class main { public static String formatInput(String input) { if (input == null) { return null; } return input.replaceAll("[.|;|\\?]", " "); } public static void countWords(String input) { if (input == null || input.length() == 0) { return; } String[] split = input.split(" "); if (split == null || split.length == 0) { return; } String[] words = new String[split.length]; int[] counts = new int[split.length]; int index = 0; for (String value : split) { boolean found = false; for (int i = 0; i < index; i++) { if (words[i].equals(value)) { counts[i]++; found = true; break; } } if (!found) { words[index] = value; counts[index] = 1; index++; } } for (int i = 0; i < index; i++) { System.out.println(words[i] + ": " + counts[i]); } } public static void main(String[] args) { String value = "I am a good student.I am in Zhengzhou.Ha?"; String format = formatInput(value); System.out.println(format); countWords(format); } }
2. 单词反转
随便输出一个字符串 String str ="45abc,+de==fg"; 里面含有 abc,de,fg 三个单词
怎么处理能让单词反转,其他顺序不变呢 输出 “45cba,+ed==gf”;
代码:
public class HelloWorld { public static String revstr(String s) { char[] ch = s.toCharArray(); for (int i = 0; i < ch.length; i++) { if ((ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] >= 'a' && ch[i] <= 'z')) { int j = i + 1; while (j < ch.length && ((ch[j] >= 'A' && ch[j] <= 'Z') || (ch[j] >= 'a' && ch[j] <= 'z'))) j++; j--; if (i != j) { for (int k = i; k <= (j - i) / 2 + i; k++) { char temp = ch[k]; ch[k] = ch[j - k + i]; ch[j - k + i] = temp; } } i = j; } } return new String(ch); } public static void main(String[] args) { System.out.println(revstr("45abc,+de==fg")); } }3. 俄罗斯套娃信封问题
给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。
当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。
请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。
注意:不允许旋转信封。
示例 1:
输入:envelopes = [[5,4],[6,4],[6,7],[2,3]] 输出:3 解释:最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。示例 2:
输入:envelopes = [[1,1],[1,1],[1,1]] 输出:1提示:
1 <= envelopes.length <= 5000envelopes[i].length == 21 <= wi, hi <= 10^4代码:
class Solution { public int maxEnvelopes(int[][] envelopes) { int n = envelopes.length; if (n == 0) return 0; Arrays.sort(envelopes, new Comparator<int[]>() { public int compare(int[] a, int[] b) { if (a[0] != b[0]) return a[0] - b[0]; return b[1] - a[1]; } }); List<Integer> lastHeight = new ArrayList<>(); lastHeight.add(envelopes[0][1]); for (int i = 1; i < n; i++) { int h = envelopes[i][1]; if (h > lastHeight.get(lastHeight.size() - 1)) lastHeight.add(h); else { int l = 0, r = lastHeight.size() - 1; while (r > l) { int m = (l + r) >> 1; if (lastHeight.get(m) < h) l = m + 1; else r = m; } lastHeight.set(l, h); } } return lastHeight.size(); } }🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
C/C++ 每日一练 专栏
Python 每日一练 专栏
Java 每日一练 专栏Java每日一练(20230313)由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java每日一练(20230313)”