![]() |
1
46
每个字符串调用strlen的次数不要超过一次。
编辑:为学究添加了空检查。对于极端学究,如果str和suffix都为空,则讨论是否应该返回非零。 |
![]() |
2
8
如果以“.foo”结尾,则返回0。 |
![]() |
3
7
我现在没有访问编译器的权限,有人能告诉我这是否有效吗?
无论如何,请确保将参数限定为
|
![]() |
4
3
如果您可以更改函数的签名,那么尝试将其更改为
这将产生更安全、更可重用和更高效的代码:
我们可以定义这样的函数:
这些额外参数的明显反论点是,它们意味着代码中有更多的噪声,或者是表达性较差的代码。 |
![]() |
5
2
这个
另外,空字符串检查也很好。 |
![]() |
6
2
测试代码,包括测试:
|
![]() |
7
1
对不起,我来晚了一点。 你不能用一些简单的指针数学做点什么吗?
字符指针通过指向数组中的第一个字符来工作。因此,当您这样做时,您将test的第一个字符设置为“.”in.foo(如果它包含这个字符)。这也是为什么不需要为它分配内存,因为它只是指向已经存在的字符数组。 |
![]() |
8
0
你也可以这样概括:
|
![]() |
9
0
也许吧。。。
顺便说一下,除了重复的strlen调用之外,原问题的解决方案看起来很好。 |
![]() |
10
0
如果总是有一些超出点的东西,我们可以沉迷于一些指针算法:
当然,你可能想在那里加一点strlen来检查一下 是 点以外的东西:-) NB-我没有运行这个来检查它,但它看起来很好。 |
![]() |
11
0
我想使用我的版本:
|
![]() |
12
0
带一个strlen(针)、strstr()和测试“\0”的通用解决方案:
|
![]() |
13
0
|
![]() |
14
0
我总是检查glib字符串函数,它们有各种有用的位。后缀检查函数已存在。
我在C有点新,所以如果这不是100%的话,我同意…但在我看来这是一个可靠的保护条款! |
![]() |
15
0
这是(对于计算机)最有效的答案。
|
![]() |
16
-1
我想这样做:
测试程序为:
|
![]() |
17
-1
我发现这是达到目的最简单的方法。 |
![]() |
18
-3
我建议最好的方法是反转字符串,然后比较前n个字符。 这里有很多字符串反转函数的例子(甚至joel将其作为一个标准的面试问题引用),所以只需实现其中一个,然后遍历反转的字符串进行比较。 编辑以回应反对票。好的,是的,这个方法确实需要额外的cpu或内存来实现,但是发问者没有指出任何这样的约束,他明确要求一个优雅的解决方案。把琴弦颠倒过来,然后从前面进行比较,这远比瞎找琴弦的末端和向后工作要优雅得多。而且对于下一个程序员来说,掌握和维护也要容易得多。 |
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
![]() |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
![]() |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |