编程之法--字符串包含
来源:互联网 发布:剑三捏脸数据不合法 编辑:程序博客网 时间:2024/05/22 20:34
给 定 两 个 分 别 由 字 母 组 成 的 字 符 串 A 和 字 符 串 B,字 符 串 B 的 长 度 比 字 符 串 A 短。请 问, 如 何 最 快 地 判 断 字 符 串 B 中 所 有 字 母 是 否 都 在 字 符 串 A 里?
package cn.algorithm;/** * @author Duoduo * @version 1.0 * @date 2017/4/17 21:24 */public class StringContain { public static void main(String[] args) { char[] a = new char[5]; a[0] = 'a'; for (int i = 1; i < a.length; i++) { a[i] = (char) (a[0] + i); } char[] b = {'a', 'b'}; boolean result = stringContain(a, b); System.out.println(result); } /** * 给 定 两 个 分 别 由 字 母 组 成 的 字 符 串 A 和 字 符 串 B,字 符 串 B 的 长 度 比 字 符 串 A 短。 * 请 问, 如 何 最 快 地 判 断 字 符 串 B 中 所 有 字 母 是 否 都 在 字 符 串 A 里? * 一个int是32位 * 利用类似hash算法的原理 * 1.把a数组中的所有的数据存放在一个hashTable中 * 2.遍历数组b中的所有数据是否在hashTable中,如果都存在,则是包含关系,只要有一个不存在,则不是包含关系 * * @param a * @param b * @return */ public static boolean stringContain(char[] a, char[] b) { int hash = 0; for (int i = 0; i < a.length; i++) {// System.out.println("===================");// System.out.println(a[i]);// System.out.println(a[i] - 'A');// System.out.println(1 << (a[i] - 'A')); hash |= (1 << (a[i] - 'A')); System.out.println(hash); } for (int i = 0; i < b.length; i++) { if ((hash & (1 << (b[i] - 'A'))) == 0) { return false; } } return true; }}
0 0
- 编程之法--字符串包含
- 编程之法2----字符串的包含
- 《编程之法》1.2字符串的包含
- 编程之法(字符串的包含)
- 《编程之法》:字符串的包含
- 编程之法:字符串包含 位运算法
- 编程之美---->字符串移位包含问题
- 编程之美-字符串移位包含
- 编程艺术之第二章:字符串包含
- 编程之美 - 字符串移位包含
- 编程艺术之1.2字符串包含_test1
- 19:字符串移位包含问题(1.7编程基础之字符串)
- 编程之美:第三章 结构之法 3.1字符串移位包含的问题
- 编程之美之字符串移位包含问题
- 编程之美之字符串移位包含的问题
- 字符串的包含——《编程之法》课后题答案
- 《编程之美3.1:字符串移位包含问题》
- 《编程之美》3.1 字符串移位包含的问题
- Java反射机制
- WAVE格式
- CameraSurfaceView——Android Camera使用详解
- js实验2.(4)AJAX的GET
- 简单常用滤波算法C语言实现
- 编程之法--字符串包含
- poj 1948 Triangular Pastures
- 动态规划练习一之采药
- 世界坐标转换为NGUI坐标办法举例
- 克隆二叉树
- 数论 欧几里得
- Netpref Test的使用
- 插入排序&希尔排序—思路及实现
- 使用阻塞队列实现生产者-消费者模式——Java实现