b****y 发帖数: 278 | 1 本人菜鸟, 请教一个C++ 问题,
对n个字符串,进行比较时,要求忽略大小写, 有没有什么快速的方法? 用ASCII码转
换太慢了
多谢了 |
r********g 发帖数: 1351 | 2 不用ASCII怎么能认出来是同一个字母的大小写呢?
算法是另一个方面,我觉得hashtable最好了。
【在 b****y 的大作中提到】 : 本人菜鸟, 请教一个C++ 问题, : 对n个字符串,进行比较时,要求忽略大小写, 有没有什么快速的方法? 用ASCII码转 : 换太慢了 : 多谢了
|
y**i 发帖数: 1112 | 3 比较相等或者差额等于'a'-'A'?
【在 b****y 的大作中提到】 : 本人菜鸟, 请教一个C++ 问题, : 对n个字符串,进行比较时,要求忽略大小写, 有没有什么快速的方法? 用ASCII码转 : 换太慢了 : 多谢了
|
x***y 发帖数: 633 | 4 #include
toupper() or tolower() |
b****y 发帖数: 278 | 5 对, 我也想用hash table
不过,需要让“acd”,"Acd","ACD", 产生同样的key;
您是怎样用ASCII? 假设一个个字母地把他们转化成 都小写是不是太费时了?
【在 r********g 的大作中提到】 : 不用ASCII怎么能认出来是同一个字母的大小写呢? : 算法是另一个方面,我觉得hashtable最好了。
|
r********g 发帖数: 1351 | 6 这个可以通过hash函数来做吧,比如你只保存前n个字母的hash index,可以用:
a[] => the string
f(a) = 0;
large primt number = p;
for(int = 0; i < n; i++) {
f(a) = f(a)*26+(a[i] > 'Z' ? (a[i] -'a' ): (a[i]-'A'));
f(a) %= p;
}
【在 b****y 的大作中提到】 : 对, 我也想用hash table : 不过,需要让“acd”,"Acd","ACD", 产生同样的key; : 您是怎样用ASCII? 假设一个个字母地把他们转化成 都小写是不是太费时了?
|
b****y 发帖数: 278 | 7 谢谢了, 这两个函数很有用哈~ 多谢了
【在 x***y 的大作中提到】 : #include : toupper() or tolower()
|
B*****t 发帖数: 335 | 8 I think this has nothing to do with hash.
【在 r********g 的大作中提到】 : 不用ASCII怎么能认出来是同一个字母的大小写呢? : 算法是另一个方面,我觉得hashtable最好了。
|
r********g 发帖数: 1351 | 9 Maybe I misunderstood. But I was thinking of N strings, and find the
duplicated
strings (or something related to comparison). In that case you need to find
some way
to avoid searching the list frequently.
【在 B*****t 的大作中提到】 : I think this has nothing to do with hash.
|
z***e 发帖数: 5393 | 10 faint...
if uing api, on windows, you can use stricmp or strnicmp or _tcsnicmp ...
check msdn.
【在 b****y 的大作中提到】 : 谢谢了, 这两个函数很有用哈~ 多谢了
|