✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)
文章目录
- 1. 题目描述
- 2. 输入描述
- 3. 输出描述
- 4. Java算法源码
- 5. 测试
- 6.解题思路
1. 题目描述
小华负责公司知识图谱产品,现在要通过新词挖掘完善知识图谱。
新词挖掘: 给出一个待挖掘文本内容字符串Content和一个词的字符串word,找到content中所有word的新词。
新词:使用词word的字符排列形成的字符串。
请帮小华实现新词挖掘,返回发现的新词的数量。
2. 输入描述
第一行输入为待挖掘的文本内容content
第二行输入为词word
3. 输出描述
在中找到的所有word的新词的数量
4. Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String word = sc.nextLine();
char[] arr = word.toCharArray();
Arrays.sort(arr);
String wordStr = String.valueOf(arr);
int len = word.length();
int count = 0;
if (line.length() < len) {
System.out.println(count);
return;
}
for (int i = 0; i <= line.length()-len; i++) {
int j = i + len;
String str = line.substring(i, j);
char[] chars = str.toCharArray();
Arrays.sort(chars);
String str2 = String.valueOf(chars);
if (str2.equals(wordStr)) {
count++;
}
}
System.out.println(count);
}
5. 测试
![在这里插入图片描述](https://img-blog.csdnimg.cn/acab44a3860242999b5d4c69c0f006a9.png1. 首先读取输入的待挖掘的文本内容 content
和词 word
。
2. 将词 word
转换为字符数组,并对字符数组进行排序,得到排好序的字符串 wordStr
。
3. 获取词 word
的长度 len
。
4. 初始化变量 count
为 0,用于记录新词的数量。
5. 如果待挖掘文本内容的长度小于词的长度,则直接输出 count
,表示没有新词。
6. 使用循环从 0 到 line.length()-len,依次截取与词长度相等的子串进行处理:
- 计算子串的结束位置
j
。 - 将子串转换为字符数组,并对字符数组进行排序,得到排好序的字符串
str2
。 - 如果
str2
与wordStr
相等,则说明找到了一个新词,将count
加一。
- 输出
count
,即为发现的新词的数量。)
6.解题思路
- 首先读取输入的待挖掘的文本内容
content
和词word
。 - 将词
word
转换为字符数组,并对字符数组进行排序,得到排好序的字符串wordStr
。 - 获取词
word
的长度len
。 - 初始化变量
count
为 0,用于记录新词的数量。 - 如果待挖掘文本内容的长度小于词的长度,则直接输出
count
,表示没有新词。 - 使用循环从 0 到 line.length()-len,依次截取与词长度相等的子串进行处理:
- 计算子串的结束位置
j
。 - 将子串转换为字符数组,并对字符数组进行排序,得到排好序的字符串
str2
。 - 如果
str2
与wordStr
相等,则说明找到了一个新词,将count
加一。
- 计算子串的结束位置
- 输出
count
,即为发现的新词的数量。