java - 这段代码的性能高在哪里了?
PHP中文网
PHP中文网 2017-04-18 09:40:58
[Java讨论组]

代码1:

bool judge(string*strs , int* positions , int n , int k)
{
    string s ;
    for(int i=0 ; i

代码2:

bool judge(string*strs , int* positions , int n , int k)
{
    string str = "" ;
    
    for(int i=0 ; i

这两段代码中第一段是我在网上AC一道题的时候参考的, 第二段是我自己写的, 作用是用于比较一个字符串偏移若干位之后是否和原串相同.
第一段就可以ac, 第二段就运行超时了.

我想知道的是第一段代码的性能高在哪里了?

//我主要写的代码是java的, 用java ac不过, 才切C++写...对C++不是很熟练
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
高洛峰
  • 初始化时下面的代码多拷贝了一次,当n较大时,因为差一个常数,差异比较明显;

  • 上面的代码使用==进行字符串匹配既string::std::compare方法,编译器会有优化。而下面的代码匹配使用for循环,调用堆栈在n很大时候很耗时间。参考http://stackoverflow.com/ques...

http://stackoverflow.com/ques...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号