网站留言短信提醒容桂网站开发
2026/2/18 15:53:50 网站建设 项目流程
网站留言短信提醒,容桂网站开发,让人做网站需要准备什么软件,网站设计公司排行题目链接#xff1a;3805. 统计凯撒加密对数目#xff08;中等#xff09; 算法原理#xff1a; 解法#xff1a;哈希表 215ms击败16.95% 时间复杂度O(N∗M) 时间长主要是因为使用了StringBuffer~ 通过观察不难发现#xff0c;其实只要两个字符串中各个字符相对于自己字符…题目链接3805. 统计凯撒加密对数目中等算法原理解法哈希表215ms击败16.95%时间复杂度O(N∗M)时间长主要是因为使用了StringBuffer~通过观察不难发现其实只要两个字符串中各个字符相对于自己字符串的首字符的相对偏移量不变那么这两个字符串就能通过若干次变化成为相同的字符串那么我们就可以通过记录这个相对偏移量而规定成偏移量特征码只要两个字符串的特征码相同它们就能成为相同字符串①用Map收集各个特征码出现的次数由于题目要的是对数需要两两成对那么最终结果只需要加上该特征码能形成的对数即可比如这个特征码出现c次那么可以形成的对数就可以表示为c×(c-1)/2②用数字记录偏移量要记得26再去%26能避免负数还能自然的完成从‘z’到a的转换③用StringBuffer记录特征码为了防止1和12拼接在一起可能会造成11和2拼接的误差所以中间再多拼接一个“”Java代码class Solution { public long countPairs(String[] words) { //存储偏移量特征码 MapString,Integer hashnew HashMap(); for(String s:words){ char chs.charAt(0); StringBuffer sbnew StringBuffer(); for(char c:s.toCharArray()){ int offset(c-ch26)%26; sb.append(offset).append(,); } hash.put(sb.toString(),hash.getOrDefault(sb.toString(),0)1); } long ret0; for(int count:hash.values()) ret(long)count*(count-1)/2; return ret; } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询