2.【Java/Python】比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母

【题目】

比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母
样例
给出 A = "ABCD" B = "ACD",返回 true
给出 A = "ABCD" B = "AABC", 返回 false

【分析】

实质上利用的是哈希表的思想。只有大写字母,一共26个,遍历A的时候,往里面压,遍历B的时候,往外边弹,如果不够弹,则不包含

【思路一】

定义一个大小为26的数组(因为大写字母有26个),遍历字符串A,将字符串A中出现的字符记录到数组中,出现一次加1;遍历字符串B,将出现的字符记录到数组中,出现一次减1。如果字符串B中的字符位置的数组大小小于0则字符串B不包含于字符串A。

【思路二】
【Java代码 思路一】
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
        //利用哈希表的算法定义数组,因为字符全是大写字母,所以数组大小为26.
        int[] index = new int[26];
        //将字符串A中的字符出现个数记录在数组中
        for(int i = 0; i < A.length(); i++){
            index[A.charAt(i) - 'A']++;
        }
        //遍历字符串B
        for(int j = 0; j < B.length(); j++){
            index[B.charAt(j) - 'A']--;
            //如果该位置的大小小于0则代表在B.charAt(j)在字符串B中出现的次数大于在A中出现的次数
            if(index[B.charAt(j) - 'A'] < 0)
                return false;
        }
        return true;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 一天的开始,是从听觉的复苏开始的。 每天我最先感知到的都是厨房里的豆浆机的声音,这时候我还没有睁眼,世界在我眼前还...
    凯里木阅读 201评论 1 1
  • 你不能左右天气,但你可以改变心情。正如你不能延伸生命的长度,但你可以决定生命的宽度!朋友,你已想好了吗?该怎样去拓...
    星宇陶阅读 159评论 0 5
  • 年龄越大,越觉得时间过的飞快。小时觉得如蜗牛般缓慢移动的时间,现在仿佛也坐上了火箭。 匆匆的,皱纹爬上了父母的眉眼...
    红眼睛兔子阅读 231评论 0 0