相关疑难解决方法(0)

找出2个相似或不相似的字符串

规则:2个字符串,a和b,它们都由ASCII字符和非ASCII字符组成(例如,中文字符gbk编码).

If the non-ASCII chars contained in b also show up in a and no less than the times they appear in b, then we say b is similar with a.
Run Code Online (Sandbox Code Playgroud)

例如:

a = "ab?ef?jkl??"  //non-ASCII chars:'?'(twice), '?'(once), '?'(once)
b = "bej???"  //non-ASCII chars:'?'(twice), '?'(once)
c = 'lk???'   //non-ASCII chars:'?'(3 times, more than twice in a)
Run Code Online (Sandbox Code Playgroud)

根据规则,b与a类似,但c不是.这是我的问题:我们不知道a和b中有多少非ASCII字符,可能很多.因此,为了找出a和b中出现非ASCII字符的次数,我应该使用哈希表来存储它们的出现时间吗?以字符串a为例:

[non-ASCII's hash-value]:[times]
     ?'s hash-val      : 2
     ?'s hash-val      : 1
     ?'s hash-val      : 1
Run Code Online (Sandbox Code Playgroud)

检查字符串b,如果我们在b中遇到非ASCII字符,然后哈希它并检查一个哈希表,如果字符串存在于哈希表中,那么它的出现次数会减少1.如果出现次数小于0(-1),那么我们说b与a不相似.

还是有更好的方法吗?

PS: 我逐字节读取字符串,如果字节小于128,那么我将其作为ASCII字符,否则我将其作为非ASCII字符(多字节)的一部分.我正在做的是找出非ASCII字符.这样对吗?

c string

3
推荐指数
1
解决办法
266
查看次数

标签 统计

c ×1

string ×1