博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode 58: Compare Strings
阅读量:4450 次
发布时间:2019-06-07

本文共 1021 字,大约阅读时间需要 3 分钟。

LintCode 58: Compare Strings

题目描述

比较两个字符串AB,确定A中是否包含B中所有的字符。字符串AB中的字符都是大写字母

样例

给出A = "ABCD" B = "ACD",返回true

给出A = "ABCD" B = "AABC", 返回false

Fri Mar 17 2017

思路

这道题跟前面一道『』很相似,不同的只是在这题中两个字符串的长度可以不相等。

可以用同样的思路,建一个线性哈希表,统计字符串A中各字符出现的次数,然后再一次减去字符串B中各字符出现的次数,若减到小于0,则可以断定字符串B中存在字符串A中不包含的字符,返回false.

代码

// 比较字符串class Solution {public:    /**     * @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     */    bool compareStrings(string A, string B) {        if (A.size() < B.size()) return false;        int count[256] = {0};        for (string::iterator iter = A.begin(); iter != A.end(); ++iter)            ++count[*iter];        for (string::iterator iter = B.begin(); iter != B.end(); ++iter)        {            --count[*iter];            if (count[*iter] < 0) return false;        }        return true;    }};

转载于:https://www.cnblogs.com/genkun/p/6568892.html

你可能感兴趣的文章
[iOS]转:iOS最佳实践
查看>>
Problem08 输入数字求和
查看>>
Eclipse配置问题
查看>>
python sublime run快捷键设置
查看>>
Hello Word
查看>>
Python小练习004
查看>>
xcode5的Command Line Tools安装
查看>>
Java 系统学习梳理_【All】
查看>>
js中prototype用法(转)
查看>>
POJ 3667 线段树的区间合并简单问题
查看>>
汇编学习2:关于编译过程和后缀名 .s和.S的区别
查看>>
Linq调试实时输出信息扩展方法(摘抄)
查看>>
Python学习笔记七(面向对象)
查看>>
使用 padding-bottom 设置高度基于宽度的自适应
查看>>
进程有一个全局变量i,还有有两个线程。i++在两个线程里边分别执行100次,能得到的最大值和最小值分别是多少?...
查看>>
DB2 数据库中字段特定字符替换为空
查看>>
解决VS2015启动界面卡在白屏的处理方法
查看>>
IIS下配置跨域设置Access-Control-Allow-Origin
查看>>
JS金字塔
查看>>
Ajax与JSON的一些总结
查看>>