[LintCode]判断一个字符串是否包含另一个字符串的所有字符
2016-08-02 22:28
615 查看
问题描述:
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母。
样例
给出 A =
给出 A =
注意事项
在 A 中出现的 B 字符串里的字符不需要连续或者有序。
问题分析:
实质上利用的是哈希表的思想。只有大写字母,一共26个,遍历A的时候,往里面压,遍历B的时候,往外边弹,如果不够弹,则不包含。
问题解决:
一种比较麻烦的解法:
一种简单的解法(本质一样):
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母。
样例
给出 A =
"ABCD"B =
"ACD",返回
true
给出 A =
"ABCD"B =
"AABC", 返回
false
注意事项
在 A 中出现的 B 字符串里的字符不需要连续或者有序。
问题分析:
实质上利用的是哈希表的思想。只有大写字母,一共26个,遍历A的时候,往里面压,遍历B的时候,往外边弹,如果不够弹,则不包含。
问题解决:
一种比较麻烦的解法:
public class Solution { /** * @param A : A string includes Upper Case letters * @param B : A string includes Upper Case letter * @return : if string A contains all of the characters in B return true else return false */ public boolean compareStrings(String A, String B) { // write your code here Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < 26; i++) { map.put((char)(i + 'A') + "", 0); } for (int i = 0; i < A.length(); i++) { String key = A.charAt(i) + ""; Integer count = map.get(key); map.put(key, ++count); } for (int i = 0; i < B.length(); i++) { String key = B.charAt(i) + ""; Integer count = map.get(key); if (map.containsKey(key)) { map.put(key, --count); } if (count < 0) { return false; } } return true; } }
一种简单的解法(本质一样):
public class Solution { /** * @param A : A string includes Upper Case letters * @param B : A string includes Upper Case letter * @return : if string A contains all of the characters in B return true else return false */ public boolean compareStrings(String A, String B) { // write your code here int[] index = new int[26]; for (int i = 0; i < A.length(); i++) { index[A.charAt(i) - 'A']++; } for (int i = 0; i < B.length(); i++) { index[B.charAt(i) - 'A']--; if(index[B.charAt(i) - 'A'] < 0){ return false; } } return true; } }
相关文章推荐
- 算法4— 判断一个字符串里是否包含另一个字符串所有的字符
- 判断一个字符串里是否包含另一个字符串所有的字符
- 判断一个字符串里是否包含另一个字符串所有的字符
- 判断一个字符串的所有字符是否都在另一个字符串中
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。
- 哈希表:一个字符串是否包含另一个字符串的所有字符
- 判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
- php判断一个字符串是否被包含在另一个字符串中
- js--判断--判断一个字符串是否包含另一个字符串
- 判断一个给定的字符串通过循环移位是否可以包含另一个字符串
- 判断一个字符串是否包含特殊字符
- 模仿String.indexOf,判断一个字符串是否包含另一个字符串
- 判断一个字符串中是否包含某个字符
- Java中判断一个字符串String是否包含特殊字符的代码
- 一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化
- 检查一个字符串中是否包含另一个字符的函数
- 判断一个字符是否包含在另一字符串中
- 如何判断一个字符串中是否包含另一个字符串
- js 经典正则判断 一个字符串是否包含另一个字符串