哈希(1)
来源:互联网 发布:php自动获取手机号码 编辑:程序博客网 时间:2024/06/08 08:48
原题:
/** * Created by gouthamvidyapradhan on 25/02/2017. * Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. * <p> * Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100. * <p> * The order of output does not matter. * <p> * Example 1: * <p> * Input: * s: "cbaebabacd" p: "abc" * <p> * Output: * [0, 6] * <p> * Explanation: * The substring with start index = 0 is "cba", which is an anagram of "abc". * The substring with start index = 6 is "bac", which is an anagram of "abc". * Example 2: * <p> * Input: * s: "abab" p: "ab" * <p> * Output: * [0, 1, 2] * <p> * Explanation: * The substring with start index = 0 is "ab", which is an anagram of "ab". * The substring with start index = 1 is "ba", which is an anagram of "ab". * The substring with start index = 2 is "ab", which is an anagram of "ab". */
答案:
public class Anagrams { int[] TC = new int[256]; int[] PC = new int[256]; /** * Main method * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { List<Integer> result = new Anagrams().findAnagrams("abab", "ab"); result.forEach(System.out::print); } public List<Integer> findAnagrams(String s, String p) { List<Integer> result = new ArrayList<>(); int pLen = p.length(); if (pLen > s.length()) return result; Arrays.fill(TC, 0); Arrays.fill(PC, 0); for (int i = 0; i < pLen; i++) { TC[s.charAt(i)]++; PC[p.charAt(i)]++; } int i = pLen; for (int l = s.length(); i < l; i++) { if (compare()) result.add(i - pLen); TC[s.charAt(i)]++; TC[s.charAt(i - pLen)]--; } if (compare()) result.add(i - pLen); return result; } private boolean compare() { for (int i = 0; i < 256; i++) { if (TC[i] != PC[i]) return false; } return true; }}
阅读全文
0 0
- 哈希(1)
- LeetCode-1-Two Sum(哈希)-Medium
- 【千里码】商品数量1,2(哈希,线段树)
- 哈希(1) - 介绍
- LeetCode 1 - 哈希
- (哈希)Squares (p2002)
- 哈希(Hashing)
- hashing (哈希)
- Hash(哈希)查找
- sort(哈希)
- Equations(哈希)
- Equations(哈希)
- hash(哈希)
- 哈希(Hash)算法
- POJ1840 Eqr (哈希)
- hdu 2428(哈希)
- POJ 3349 (哈希)
- POJ 1840(哈希)
- zookeeper学习记录-08 Zookeeper典型使用场景及实现
- 浅浅理解c#和.net的关系
- 适配平板和手机端时注意事项
- bitset
- 计算机网络-5
- 哈希(1)
- Accept与Content-Type
- wget小技巧
- 到底什么是集群&分布式
- RMAN全库【完全恢复/不完全恢复】
- nginx安装以及linux虚拟环境的安装以及uwsgi相关
- MMLSpark:微软开源的用于Spark的深度学习库
- Android4.4以后第三方应用无法删除短信的解决方案
- 新手C 突发奇想 I LOVE U