前言
工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。
题目描述
小王设计了一个简单的猜字谜游戏,游戏的谜面是一个或多个错误的单词(如"nesw"),玩家需要猜出谜底库中正确的单词。
猜中的要求如下:
- 变换顺序:谜面和谜底单词变换顺序后相同,例如"nwes"和"news"。
- 字母去重:谜面和谜底单词去重后的字母序列相同,例如"woo od"和"wo od",去重后都是"w od"。
玩家需要在谜底库中找到所有满足上述任一条件的单词,并返回结果列表。如果找不到对应的谜底,则返回"not found"或类似信息。
输入
谜面单词列表,以","分隔。
谜底库单词列表,以","分隔。
输出
匹配到的正确单词列表,以","分隔。
如果找不到对应谜底,返回"not found"。
示例
输入:
conection,today // 谜面
connection,wrong,today // 谜底库输出:
connection,today
解题思路
- 判断包含字符是否相等
- 判断是否去重后字母相同
题解
java实现
package huawei.e100;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;
/**
* @author arnold
* @date 2024年12月10日
*
*/
public class T13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
List<String> res = new ArrayList<>();
String[] guessWords = sc.nextLine().split(",");
String[] baseWords = sc.nextLine().split(",");
for (String s : guessWords) {
res.add(guess(s, baseWords));
}
System.out.println(String.join(",", res));
}
}
private static String guess(String guessWord, String[] baseWords) {
String res = "not found";
for (String b : baseWords) {
if (check1(guessWord,b) || check2(guessWord,b)) {
return b;
}
}
return res;
}
// 判断包含字符是否相等
private static boolean check1(String guessWord, String baseWord) {
if (guessWord.length() != baseWord.length()) return false;
char[] c1 = guessWord.toCharArray();
Arrays.sort(c1);
char[] c2 = baseWord.toCharArray();
Arrays.sort(c2);
if (Arrays.equals(c1, c2)) {
return true;
}
return false;
}
// 判断是否去重后字母相同
private static boolean check2(String guessWord, String baseWord) {
TreeSet<Character> t1 = new TreeSet<Character>();
TreeSet<Character> t2 = new TreeSet<Character>();
for (char c: guessWord.trim().toCharArray()) {
t1.add(c);
}
for (char c: baseWord.trim().toCharArray()) {
t2.add(c);
}
if(t1.equals(t2)) {
return true;
}
return false;
}
}
1252

被折叠的 条评论
为什么被折叠?



