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

问题描述:

比较两个字符串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;
    }
}
时间: 2024-10-04 22:08:09

【LintCode】判断一个字符串是否包含另一个字符串的所有字符的相关文章

String的两个API,判断指定字符串是否包含另一字符串,在字符串中删除指定字符串。

// 在字符串中删除指定字符串. String phoneNum="1795112345"; phoneNum = phoneNum.replace("17951", ""); System.out.println(phoneNum); //判断指定字符串是否包含另一字符串 String phoneNum="1795112345"; String IpNum="17951"; return phoneNum

python判断字符串是否包含另一字符串的方法的代码

把做工程过程中经常用到的内容段做个备份,下边内容是关于python判断字符串是否包含另一字符串的方法的内容. contains = 'abcde'.find('bcd') >= 0 方法二: contains = 'abcde'.count('bcd') > 0 原文地址:https://www.cnblogs.com/cantury/p/11473891.html

php如何判断一个字符串是否包含另一个字符串

来自1:http://blog.sina.com.cn/s/blog_8edc37a801016yha.html -------------------------------------------------------------------- 我觉得最简单的就是:(用这种最好,StrPos效率最高) strpos($a, $b) !== false 如果$a 中存在 $b,则为 true ,否则为 false. 用 !== false (或者 === false) 的原因是如果 $b 正

java中如何判断一个字符串是否包含另外一个字符串的方法

indexOf(String s)的使用,如果包含,返回的值是包含该子字符串在父类字符串中起始位置:如果不包含必定全部返回值为-1 package my_automation; public class z_test { public static void main(String[] args) { String test = "This is test for string"; System.out.println(test.indexOf("This"));

如何高效的检测一个数组是否包含某一个值

如何检测一个数组(未排序)是否包含一个指定的值?这在Java中是一个非常有用且常见的操作.这还是一个在stackoverflow投票最多的一个问题.在投票最多的答案中,有几种不同的方式来完成这个问题.但是时间复杂度存在很大的差异.下面,我将展示每个方法所花费的时间. 1.检测数组中是否包含某一个值的四种方式 1)使用List public static boolean useList(String[] arr, String targetValue) { return Arrays.asList

sql 一个字段是否包含另一个字段

/* Navicat MySQL Data Transfer Source Server         : test Source Server Version : 50528 Source Host           : localhost:3306 Source Database       : test Target Server Type    : MYSQL Target Server Version : 50528 File Encoding         : 65001 Da

二叉树(16)---- 一个二叉树是否包含另一个二叉树

二叉树问题合集 2.问题描述 二叉树A和B的每个节点的数据(int型数据)存储在不同文件中,存储方式为前序遍历和中序遍历,根据这两种遍历重建二叉树,并且判断二叉树A是否包含二叉树B. 3.算法描述 (1)首先将节点数据的前序遍历和中序遍历序列读入数组 (2)分别根据各自的前序遍历和中序遍历重建二叉树A和B (3)判断B是否在A中 代码: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #in

关于javascript中判断一个字符串是否包含另一个字符串

var temp = "hello,world"; if(temp.indexOf("hello") >= 0 ){       alert('temp中包含hello字符串');   }

判断一个字符串是否包含另一个字符串

if (iOS8) {//ios8以上的系统才能用这个方法,否则会报错 if ([str containsString:str1]) { NSLog(@"str包含str1"); } } 通用的方法: NSRange range = [str rangeOfString:str1]; if (range.location != NSNotFound) { NSLog(@"str包含str1"); }