当前位置:   article > 正文

LeetCode 2416. 字符串的前缀分数和_leetcode2416

leetcode2416

2416. 字符串的前缀分数和

 

 

Trie】用字典树来存字符串,在插入的过程中把所有经过的节点的cnt + 1,然后再遍历一遍取节点的cnt即可。

  1. class Solution {
  2. // trie
  3. // 2:50 13
  4. class Node {
  5. int cnt;
  6. Node[] nodes = new Node[26];
  7. }
  8. Node root = new Node();
  9. void insert(String word) {
  10. Node p = root;
  11. for (var i = 0; i < word.length(); i++) {
  12. int j = word.charAt(i) - 'a';
  13. if (p.nodes[j] == null) {
  14. Node node = new Node();
  15. p.nodes[j] = node;
  16. }
  17. p = p.nodes[j];
  18. p.cnt += 1;
  19. }
  20. }
  21. int search(String word) {
  22. Node p = root;
  23. int res = 0;
  24. for (var i = 0; i < word.length(); i++) {
  25. int j = word.charAt(i) - 'a';
  26. p = p.nodes[j];
  27. res += p.cnt;
  28. }
  29. return res;
  30. }
  31. public int[] sumPrefixScores(String[] words) {
  32. int n = words.length;
  33. int[] ans = new int[n];
  34. for (var word: words) insert(word);
  35. for (var i = 0; i < n; i++) {
  36. ans[i] = search(words[i]);
  37. }
  38. return ans;
  39. }
  40. }

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号