ITKeyword,专注技术干货聚合推荐

注册 | 登录

【面试题】:统计一串字符串中仅出现一次的第一个字符

qq_23100787 分享于 2015-12-28

推荐:15. Google面试题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析: 一般方法是使用每个字符间都比较一次,算法复杂度为o(n^2) 可以使用空间

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1054

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

这个题思路就是,利用hash表把所有的字符存储进去,然后通过链表寻找的方式来找到第一个仅出现一次的字符

跟我前面做的一道OJ题非常类似,这道题值得称道的地方:
利用了链表进行遍历,能够减少数组遍历而产生的不必要的开销!

推荐:一道面试题:从一个字符串中找出第一个不重复字符;算法一;

一道面试题:从一个字符串中找出第一个不重复字符;比如对于字符串abbbccdefafgg,其中d、e只出现一次,只需要找出d(第一个出现的不重复字符)即可 。 import jav

附上代码,在代码里面有解释:

#include <iostream>
using namespace std;
char firstSingle(char *str){
    int a[255];
    memset(a,0,sizeof(a));
    //for(int i=0;i<255;i++) cout<<a[i]<<" ";cout<<endl;
    char *p = str;
    while(*p!='\0'){        //统计数据出现次数
        a[*p]++;
        p++;
    }
    p = str;
    while(*p!='\0'){        //如果不是链表尾
        if(a[*p]==1){       //找到第一个仅出现一次的元素
             char c = *p;
             return c;
        }
        p++;
    }
    //return '\0';
}
int main(){
    char str[100];
    cin>>str;
    cout<<firstSingle(str);
    return 0;
}

附上运行结果展示:
这里写图片描述

可以看出,第二行结果显示的是b,说明结果对了~

推荐:算法与数据结构面试题(21)-在一个字符串中找到第一个只出现一次的字符

题目 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 解题思路 上一道题是求字符串中各个字符的个数,其实大同小异,这道题比上道题还

这个题思路就是,利用hash表把所有的字符存储进去,然后通过链表寻找的方式来找到第一个仅出现一次的字符 跟我前面做的一道OJ题非常类似,这道题值得称道的地方: 利用了链表进行遍历,能够减少

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。