请各位看看应该怎么优化

img


第一次遇见时间超限这种情况,刚开始学不知道怎么缩短时间希望各位帮帮忙给个方案

优化的一个办法是,在第16行以后,加个判断,当b大于1,则break退出循环,以减少运行时间。

修改如下:

参考链接:


#include <iostream>
#include <cstring>

using namespace std;

int main(void){
    
    string str;
    cin>>str;
    int i;
    
    for(i=0;i<=str.size()-1;i++){
        
        int b=0;
        for(int j=0;j<=str.size()-1;j++){
            if(str[i]==str[j]){
                b++;
                if(b>1){ // 当与当前数组下标i的元素值相同的元素与的个数大于1,则break退出,以减少运行时间 
                    break;
                }
            }
        }
        
        if(b==1){
            cout<<str[i];
            return 0;
        }
    }
    
    cout<<"no";
    
    return 0;
    
}

img

算法效率低了。
建个数组a[128]={0} 保存字符
遍历字符串,令a[str[i]]++,最后遍历a,输出元素为1的字符cout<<(char)i

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^