题解 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

import java.util.*;
import java.util.stream.*;
import java.math.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case

            Integer counter = in.nextInt();
            Map<String, BigDecimal> mulValMap = new HashMap<>();
            Map<String, BigDecimal> addValMap = new HashMap<>();
            final List<String> allWords = new ArrayList<>();
            IntStream.range(1, counter + 1).forEach(x-> {
                String v = in.next();
                char[] ch = v.toCharArray();
                BigDecimal mulVal = BigDecimal.ONE;
                BigDecimal addval = BigDecimal.ZERO;
                for (char c : ch) {
                    BigDecimal curCharval = BigDecimal.valueOf( Integer.valueOf(c));
                    mulVal = mulVal.multiply(curCharval);
                    addval = addval.add(curCharval);

                }
                mulValMap.put(v, mulVal);
                addValMap.put(v, addval);
                allWords.add(v);

            });
            String word = in.next();
            mulValMap.remove(word);
            addValMap.remove(word);
            Integer index = in.nextInt();

            char[] ch = word.toCharArray();

            BigDecimal wordmulVal = BigDecimal.ONE;
            BigDecimal wordaddval = BigDecimal.ZERO;
            for (char c : ch) {
                BigDecimal curCharval = BigDecimal.valueOf( Integer.valueOf(c));
                wordmulVal = wordmulVal.multiply(curCharval);
                wordaddval = wordaddval.add(curCharval);

            }

            List<String> sortedAllWords = allWords.stream().sorted((o1,o2)->{
                return o1.compareTo(o2);
            }).collect(Collectors.toList());

            List<String> brothers = new ArrayList<>();
            for(String key:sortedAllWords){
                  BigDecimal v1= mulValMap.get(key);
                  BigDecimal v2= addValMap.get(key);
                  if(!key.equals(word) && v1.equals(wordmulVal) && v2.equals(wordaddval)){
                    brothers.add(key);
                  }
            }
            
            System.out.println(brothers.size());
            if(brothers.size()>0 && brothers.size()>=index){
                    System.out.println(brothers.get(index-1));
            }
           


        }
    }
}

全部评论

相关推荐

和光同尘cc:给我发就算了,还敢恶心上交✌🏻
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务