比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母:

给出 A = "ABCD" B = "AABC", 返回 false

给出 A = "ABCD" B = "ACD",返回 true

我的代码:

    /**
* 由于是在字符串strA中确定是否包含字符串strB中的所有字符<br/>
* 故只需要将字符串strB中的每一个字符在字符串strA中遍历,当在字符串strA中不存在时,则直接返回false<br/>
* 当存在是,则进行字符串strB的下一个字符查找<br/>
* @param strA
* @param strB
* @return
*/
public boolean compareStrings(String strA, String strB) {
int aLen = strA.length();
int[] arr = new int[aLen];
for (int i = 0; i < aLen; i++) {
arr[i] = 0;
}
boolean flag = true;
for (int i = 0, bLen = strB.length(); i < bLen; i++) {
flag = false;
for(int j = 0;(j < aLen) && (!flag);j ++){
if (strB.charAt(i) == strA.charAt(j) && arr[j] == 0) {
arr[j] = 1;
flag = true;
}
}
if (!flag) {
break;
}
}
return flag;
}

还有种比较牛的

思路:统计两边的信息进行比较。如果B中的每种字符的个数小于等于A中的,则A包含B。

参考资料:http://www.jianshu.com/p/f7f9987f1bbb

int Achar[26];//储存字符串的每个字母个数
int Bchar[26];
for (int i = 0; i<26; i++) {
Achar[i] = 0;
Bchar[i] = 0;
}
int Adate,Bdate;//记录AB的字符统计数据
int countA = A.length();
int countB = B.length();
for (int i = 0; i<countA; i++) {
int index;
index = A[i] - 65;
Achar[index]++;
}
for (int i = 0; i<countB; i++) {
int index;
index = B[i] - 65;//65为大写A的ASCⅡ码值
Bchar[index]++;
}
for (int i = 0; i<26; i++) {
if (Achar[i]<Bchar[i])
return false;
}
return true;
}

LintCode 字符串比较的更多相关文章

  1. lintcode:字符串置换

    题目 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 样例 "abc" 为 "cba&q ...

  2. LintCode 面试题 旋转字符串

    1.题目描述 题目链接:http://www.lintcode.com/zh-cn/problem/rotate-string/ 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 2. ...

  3. LintCode笔记 - 8. 旋转字符串

    这一题相对简单,但是代码质量可能不是很好,我分享一下我的做题笔记以及做题过程给各位欣赏,有什么不足望各位大佬指出来 原题目,各位小伙伴也可以试着做一下 . 旋转字符串 中文English 给定一个字符 ...

  4. Lintcode 157. 判断字符串是否没有重复字符

    ------------------------ 因为字符究竟是什么样的无法确定(比如编码之类的),恐怕是没办法假设使用多大空间(位.数组)来标记出现次数的,集合应该可以但感觉会严重拖慢速度... 还 ...

  5. 【LintCode】转换字符串到整数

    问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...

  6. 【LintCode】判断一个字符串是否包含另一个字符串的所有字符

    问题描述: 比较两个字符串A和B,确定A中是否包含B中所有的字符.字符串A和B中的字符都是 大写字母. 样例 给出 A = "ABCD" B = "ACD",返 ...

  7. lintcode :同构字符串

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  8. lintcode:anagrams 乱序字符串

    题目 乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 您在真实的面试中是否遇到过这个 ...

  9. lintcode 中等题:interleaving String 交叉字符串

    题目 交叉字符串 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成. 样例 比如 s1 = "aabcc" s2 = "dbbca" - 当 ...

随机推荐

  1. ADO.NET笔记——使用DataAdapter执行增删改操作

    相关知识: DataSet中的数据一旦从数据库下载下来,便不再与数据库保持联系.如果修改了DataSet中的数据,需要重新建立连接,并且通过SQL命令将修改更新到数据库去 编写SQL命令往往比较繁琐和 ...

  2. linux 关机方式

    linux 关机命令: 1-  init 0 关机. 具体详情接受可以 init --help 查询 如下: init [OPTIONS...] {COMMAND} Send control comm ...

  3. 解决nginx负载均衡的session共享问题

    1.不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站. ...

  4. Crusher Django Tutorial(5) 使用内置管理员系统

    http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial5-using-admin.html 顺便学习一下FQ Crush ...

  5. EventHandler委托的使用

    今天复习了一下事件和委托,本来看事件来着,看到EventHandler,写了一个小例子,想贴在这里解释一下.为了弄清楚EventHandler, 还是回归到最基本的委托,曾经在园子里看到一位前辈用深入 ...

  6. SQL Server 本地语言版本

    要一些实验是往往喜欢使用英文的Windows 以及SQL Server ,但有时需要使用中文的环境方便理解.中文的SQL Server 不能被安装在英文的Windows 系统上. 根据文档可得知以下兼 ...

  7. Hadoop2

    http://www.cnblogs.com/miaoxiaoyu/archive/2012/07/29/2614060.html

  8. 【python】 web开发入门

    进入Web开发 现在你完成了Python忍者训练,准备深入Ptyhon的Web开发,但现在的问题是有很多的框架,从中选择最好的框架非常困难,但从初学者的角度出发,Flask基本Web框架将非常适合We ...

  9. vxworks启动

  10. iOS 下拉菜单 FFDropDownMenu自定义下拉菜单样式实战-b

    Demo地址:https://github.com/chenfanfang/CollectionsOfExampleFFDropDownMenu框架地址:https://github.com/chen ...