笔试:单词问题

1

题目: 给出包含一些单词作为关键字和只在一个字母上不同的一列单词作为关键字的值,输出那些具有至少minWords个通过1个字母替换得到的单词的单词。
key ——value
wine—— wide、wife、wipe、wink、wins。。

我们知道标准库中Map接口,接受 《key, value》数据。其中关键字key唯一,值value可以不唯一。

    public static void printHighChangeables(Map<String, List<String>> adjacentWords, int minWords) {
        for (Map.Entry<String, List<String>> entry : adjacentWords.entrySet()) {
            List<String> words = entry.getValue();

            if (words.size() >= minWords) {
                System.out.print(entry.getKey() + " )" + words.size() + "):");
                for (String w : words)
                    System.out.print(" " + w);
                System.out.println();
            }
        }
    }

2

检测两个单词是否只在一个字母上不同

public static boolean oneCharOff(String word1, String word2){
    if(word1.length() != word2.length())
        return false;

    int diffs = 0;

    for(int i = 0; i < word1.length(); i++)
        if(word1.charAt() != word2.charAt())
            if(++diffs > 1)
                return false;

    return diffs == 1;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值