我将执教的ACM队下月(去图),时间已经到了谈论C.字符串除了对标准库的讨论,strcpy,strcmp等等,我想给他们一些提示(像str[0] is equivalent to *str,以及类似的东西).
你知道任何名单(如备忘单)或你自己的经验吗?
我已经知道ACM比赛的书籍了(这很好,尤其是这个),但我是在追逐交易的技巧.
谢谢.
编辑:非常感谢大家.我会接受投票最多的答案,并且适当地支持我认为相关的其他人.我希望在这里做一个总结(就像我在这里做的那样,asap).我现在有足够的材料,我确信这极大地改善了字符串的会话.再一次,谢谢.
kmm*_*kmm 26
这很明显,但我认为知道字符串只不过是一个由零字节分隔的字节数组是很重要的.你可能知道C字符串并不是所有用户友好的.
if( s1 == s2 )
doStuff(s1);Run Code Online (Sandbox Code Playgroud)
您必须比较字符串中的每个字符.使用strcmp或更好的strncmp.
if( strncmp( s1, s2, BUFFER_SIZE ) == 0 )
doStuff(s1);Run Code Online (Sandbox Code Playgroud)
滥用strlen()将极大地恶化性能.
for( int i = 0; i < strlen( string ); i++ ) {
processChar( string[i] );
}
Run Code Online (Sandbox Code Playgroud)
将具有至少O(n 2)时间复杂度,而
int length = strlen( string );
for( int i = 0; i < length; i++ ) {
processChar( string[i] );
}
Run Code Online (Sandbox Code Playgroud)
将具有至少O(n)时间复杂度.对于那些没有时间去思考它的人来说,这并不是那么明显.