zoukankan      html  css  js  c++  java
  • 找第一个只出现一次的字符

    题目地址

    方法一:

    #include<stdio.h>
    #include<string.h>
    char a[100005];
    
    int main(){
        int f = 0;
        scanf("%s" , a);
        int ll = strlen(a);
        for(int i = 0;i < ll;i++){
            int x = 0;
            if(a[i] == '*')
                continue;
            for(int j = i+1;j < ll;j++){
                if(a[j] == '*')
                    continue;
                if(a[i] == a[j])
                    {
                        x= 1;
                        a[j] = '*';
                        continue;
                    }
            }
            if(x == 0){
                printf("%c",a[i]);
                f = 1;
                break;
            }
    
        }
        if(f == 0)
            printf("no");
        return 0;
    }

    两个方向优化时间:

    1. strlen()  一次性算出来,不要在循环中多次计算
    2. 从前往后遍历时,如果a[i ]== a[j],可以令a[j ] = '*' ,特殊字符作为标志,这样,如果后面的循环中遇到 a[i] = '*' 【外层循环】 和 a[j] = '*' 【内层循环】 的情况,完全可以直接跳过该轮循环,优化时间

    方法二:

    #include<stdio.h>
    #include<string.h>
    int a[26];
    char b[100005];
    int main(){
        memset(a,0,sizeof(a));
        char c;
        int i = 0;
        int f =0;
        scanf("%s",b);
        int bl = strlen(b);
        for(int i =0;i < bl;i++){
            int x = b[i] - 97;
            a[x] = a[x] + 1;
        }
    
        for(int i =0; i < bl;i++){
            int x = b[i] - 97;
            if(a[x] == 1){
                printf("%c",b[i]);
                f = 1;
                break;
            }
        }
        if(f == 0)
            printf("no");
        return 0;
    }

    两个方向优化时间:

    1. strlen()  一次性计算出来,不要放到循环中多次计算
    2. 利用计时器【一般是int 数组】,存入26个0,表示a-z 每个字符出现的次数,然后从前往后遍历字符串,判定每个字符在计时器对应的位置的数值【即出现了几次】,如果遇到为1的情况,直接输出该字符,break结束。如果没有,则输出no
  • 相关阅读:
    Flutter图片选择 image_picker(官方)插件使用详解
    androidstudo如何跨越这个厚厚的墙,亲测有效 Could not resolve com.android.tools.build:gradle:
    qwq。。胡诌qwq
    关于很狗的军训qwq
    Leetcode每日一题 503.下一个更大元素II
    C++ 关于volatlie
    C++虚成员函数与动态联编
    graphics pipeline
    pointer or function
    线段树
  • 原文地址:https://www.cnblogs.com/expedition/p/11562191.html
Copyright © 2011-2022 走看看