LintCode 字符串比较
比较两个字符串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 字符串比较的更多相关文章
- lintcode:字符串置换
题目 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 样例 "abc" 为 "cba&q ...
- LintCode 面试题 旋转字符串
1.题目描述 题目链接:http://www.lintcode.com/zh-cn/problem/rotate-string/ 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 2. ...
- LintCode笔记 - 8. 旋转字符串
这一题相对简单,但是代码质量可能不是很好,我分享一下我的做题笔记以及做题过程给各位欣赏,有什么不足望各位大佬指出来 原题目,各位小伙伴也可以试着做一下 . 旋转字符串 中文English 给定一个字符 ...
- Lintcode 157. 判断字符串是否没有重复字符
------------------------ 因为字符究竟是什么样的无法确定(比如编码之类的),恐怕是没办法假设使用多大空间(位.数组)来标记出现次数的,集合应该可以但感觉会严重拖慢速度... 还 ...
- 【LintCode】转换字符串到整数
问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...
- 【LintCode】判断一个字符串是否包含另一个字符串的所有字符
问题描述: 比较两个字符串A和B,确定A中是否包含B中所有的字符.字符串A和B中的字符都是 大写字母. 样例 给出 A = "ABCD" B = "ACD",返 ...
- lintcode :同构字符串
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...
- lintcode:anagrams 乱序字符串
题目 乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 您在真实的面试中是否遇到过这个 ...
- lintcode 中等题:interleaving String 交叉字符串
题目 交叉字符串 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成. 样例 比如 s1 = "aabcc" s2 = "dbbca" - 当 ...
随机推荐
- linux命令行解析函数介绍
函数原型: int getopt(int argc,char * const argv[ ],const char * optstring); 给定了命令参数的数量 ( ...
- oracle 文件导出
$ cat me.sqlset echo offset term offset line 1000 pages 0set feedback offset heading offset trimspoo ...
- Delphi XE5教程1:语言概述
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...
- WPF中实现Button.Content变化的简易动画
项目中曾要这样的需求——输入法的切换,要求从English切换到简体中文的时候,Button的Content先从English变成空白,再从空白变成简体中文, 而不是直接从English变成简体中文. ...
- ASP.NET对HTML元素进行权限控制(一)
一个HTML页面有很多的元素比如<DIV>,<P>等.这些元素构成了HTML页面.在Web开发中权限控制是每个系统都要用到了.界面每个元素的权限也是需要控制的.比如一个查询用户 ...
- UnitTest
using Bll; using Model; using Dal; using NUnit.Framework; using NUnit.Mocks; using System.ServiceMod ...
- Android中关于日期时间与时区的使用总结
在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范. 一.Unix时间戳 Unix时间戳(Unix tim ...
- CentOS 6.0 设置IP地址、网关、DNS
切忌: 在做任何操作之前先备份原文件,我们约定备份文件的名称为:源文件名称+bak,例如原文件名称为:centos.txt 那么备份文件名称为:centos.txtbak 引言:linux ...
- MAC 升级到10.10(OS X Yosemite)下apache+php的配置问题
MAC升级到最新系统后 本地测试的站点不能正常运行,其原因是mac系统升级后 他的apache的版本也随之升级了版本 Server version: Apache/2.4.9 (Unix) Serve ...
- yiibooster+bsie
对于使用yii框架来说,如果使用bootstrap框架的话,现在有一个比较方便的使用途径:yiibooster.官网地址是:http://yii-booster.clevertech.biz/当然,我 ...