第一个只出现一次的字符

class Solution {
public:
    int FirstNotRepeatingChar(string str) {
        int *a=new int[51]();//初始化为0,那个字符出现1
        int *b=new int[51]();//那个字符对应的下标
        int num=100;
        int temp=100;
        if(str.size()==0)
            return -1;
        for(int i=0;i<str.size();i++)
        {
            if(str[i]<='Z'&&str[i]>='A')
            {
                if(a[str[i]-65]==1)
                    a[str[i]-65]=2;
                if(a[str[i]-65]==0)
                {
                    a[str[i]-65]=1;//出现一次
                    b[str[i]-65]=i;
                }

             }

            if(str[i]<='z'&&str[i]>='a')
            {
                if(a[str[i]-71]==1)
                    a[str[i]-71]=2;
                if(a[str[i]-71]==0)
                {
                    a[str[i]-71]=1;//出现一次
                    b[str[i]-71]=i;//记录出现第一次的位置
                }
             }

            for(int i=0;i<51;i++)
            {
                if(a[i]==1)
                {
                    if(str[i]<='z'&&str[i]>='a')
                        temp=b[i];
                    if(str[i]<='Z'&&str[i]>='A')
                        temp=b[i];
                     if(num>temp)
                          num=temp;
                }

            }

        }

        delete [] a,b;
        return num;
    }
};

失败,没调试出来;下一轮做再说,
大神解法:一样哈希,只不过哈希表里面用自家的方式,然后选出1即可。

全部评论

相关推荐

11-17 14:18
门头沟学院 C++
代码飞升_不回私信人...:这种感觉还好。只是你写一个PPT,可能他面的快一点而已。那种让你写什么方案,写什么代码的那种。就没必要去了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务