乱序字符串anagrams
[抄题]:
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。
对于字符串数组 ["lint","intl","inlt","code"]
返回 ["lint","inlt","intl"]
[思维问题]:
[一句话思路]:
key是相同的哈希值(重要),value是不同的字符串 多余一个就取出来
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:

[一刷]:
- result结果要放在ArrayList<String>中, 整体是arraylist,里面的东西是string。temp : map.values()表示把字符串里的东西都拿出来
- i < str.length() 字符串取长度要加括号
- 数据结构、返回语句都要写在自己的方法里,而不是solution class里
- 如果没有key,用put函数新建一个点加进去new ArrayList<String>(),这时候还没有添加字符串进去。之后不论有没有key,都要用add函数添加字符串:map.get(hash).add(str),所以不要写else。
int a = 378551;
int b = 63989;记住就好
[二刷]:
hash = nums[i] + hash * a;
a = a * b;用来生成hash值
- 字符串都存储于ArrayList<String>()动态数组之中,因为不知道会有多长
- str.charAt(i)表示取出字母
- int[] count数组在循环里定义,不要在循环外定义,免得有添加后删除不了的元素
[三刷]:
[四刷]:
[五刷]:
[总结]:
还是重要的作为key放在前面:这次是同一组合字母的hash值
[复杂度]:Time complexity: O(n) Space complexity: O(n)
[英文数据结构,为什么不用别的数据结构]:
key-value
[其他解法]:
[Follow Up]:
[题目变变变]:
public class Solution {
/*
* @param strs: A list of strings
* @return: A list of strings
*/
//get hash
private int getHash(int[] nums) {
int hash = 0;
int a = 378551;
int b = 63989;
for (int i = 0; i < nums.length; i++) {
hash = nums[i] + hash * a;
a = a * b;
}
return hash;
}
public List<String> anagrams(String[] strs) {
HashMap<Integer,ArrayList<String>> map = new HashMap<Integer,ArrayList<String>>();
//put into count
for (String str : strs) {
int[] count = new int[26];
for (int i = 0; i < str.length(); i++) {
count[str.charAt(i) - 'a']++;
}
int hash = getHash(count);
//map or not
if (!map.containsKey(hash)) {
map.put(hash, new ArrayList<String>());
}
map.get(hash).add(str);
}
//result
ArrayList<String> result = new ArrayList<String>();
for (ArrayList<String> temp : map.values()) {
if (temp.size() > 1) {
result.addAll(temp);
}
}
return result;
}
}
乱序字符串anagrams的更多相关文章
- lintcode:anagrams 乱序字符串
题目 乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 您在真实的面试中是否遇到过这个 ...
- Lintcode--003(乱序字符串)
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包含小写字母 样例 ...
- 760. Find Anagram Mappings乱序字符串的坐标位置
[抄题]: Given two lists Aand B, and B is an anagram of A. B is an anagram of A means B is made by rand ...
- LintCode-乱序字符串
题目描述: 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包含小写字 ...
- lintcode-171-乱序字符串
171-乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包 ...
- VC6.0 多线程输出乱序问题
今天尝试编写多线程最简单的例子 #include "stdafx.h" #include "windows.h" #include <iostream&g ...
- 【转】文件中有10G个整数,乱序排列,要求找出中位数
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). ...
- [Android Security] APK自我保护 - 代码乱序
cp : https://segmentfault.com/a/1190000005095406 乱序原理 为了增加逆向分析的难度,可以将原有代码在 smali 格式上进行乱序处理同时又不会影响程序的 ...
- sort排序bug乱序
项目需要对组件的zIndex值进行降序排列,刚开始采用的是sort进行排序,排完之后感觉没问题,毕竟也是经常用的,可是昨天无意中把zIndex值打出来看,一看不知道,发现只要排序的组件超过10个就出问 ...
随机推荐
- 使用XML-RPC进行远程文件共享
这是个不错的练习,使用python开发P2P程序,或许通过这个我们可以自己搞出来一个P2P下载工具,类似于迅雷.XML-RPC是一个远程过程调用(remote procedure call,RPC)的 ...
- Xss漏洞原理分析及简单的讲解
感觉百度百科 针对XSS的讲解,挺不错的,转载一下~ XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XS ...
- Samba 简介
SMB 代表的是服务器消息块 (Server Message Block),它是用于在 Windows 上共享文件的协议的原始名称. CIFS 代表公共 Internet 文件系统 (Common I ...
- 对 Spring 的核心(AOP 和 IOC)的理解(大白话)
Spring 首先它是一个开源而轻量级的框架.其核心容器的主要组件是Bean工厂(BeanFactory).Bean工厂使用控制反转(IOC)模式来降低程序代码之间的耦合度,并提供了面向切面编程(AO ...
- Oracle中查询表的大小、表的占用情况和表空间的大小
有两种含义的表大小.一种是分配给一个表的物理空间数量,而不管空间是否被使用.可以这样查询获得字节数: select segment_name, bytes from user_segments whe ...
- 解决maven工程 子工程中的一些配置读取进来的问题
方案:在父工程中手动配置一些节点 <build> <!-- 插件 --> <plugins> <plugin> <groupId>org.a ...
- HTML5 Canvas ( 绘制一轮弯月, 星空中的弯月 )
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- IP 别名和辅助 IP 地址
https://blog.csdn.net/xiewen99/article/details/54729112?utm_source=itdadao
- MYSQL三大范式
第一范式:确保每列的原子性. 第一范式是最基本的范式. 数据库表中的字段都是单一属性的,不可再分. 只要是关系数据库都满足第一范式 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子 ...
- 13.小结Action
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在struts2中一个普通的java类只要有public String ex ...