LintCode 字符串比较
2015-06-27 21:36
363 查看
比较两个字符串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; }
相关文章推荐
- Github上优秀的Objective-C项目简介
- 检测内存泄漏的关键
- HDU_2068 RPG的错排(错排+组合数)
- usb鼠标驱动
- 使用Maven编译的时候跳过运行测试
- c语言模拟函数画图
- spring ldap pool 连接池
- 自定义表单的类
- 编译原理概述
- 2015年7月(一个很关键的节点)
- poj 2000 Gold Coins
- Linux下Mysql常见连接错误
- codesign returns User Interaction is not allowed
- 浅谈Java分布式计算
- 华为机试—手机电量
- storage -cinder(2)
- 给定一个整数s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n)
- java学习之旅31--面向对象_04_程序执行过程的内存分析_01
- 三种快速排序算法以及快速排序的优化
- 黑马day09 mysql基本语法