算法复习:字符串集

表示数值的字符串

以e或E分成两部分分别判断即可。

int maxl(int a,int b)
{
    if(a>b)
        return a;
    return b;
}
class Solution {
public:
    bool isNumeric(string str)
    {
        int lable=0,pos=maxl(str.find("e",0),str.find("E",0));
        string up="",down="";
        if(pos==-1)
            up=str;
        else
        {
            up=str.substr(0,pos);
            down=str.substr(pos+1,str.size()-pos);
            if(down=="")
                return false;
        }
        for(int i=0;i<up.size();i++)
        {
            if((up[i]=='+'||up[i]=='-')&&i==0)
                continue;
            if((up[i]=='+'||up[i]=='-')&&i!=0)
                return false;
            if(up[i]=='.')
            {
                if(lable==1)
                    return false;
                lable=1;
                if(up[i+1]>='0'&&up[i+1]<='9')
                    continue;
                else
                    return false;
            }
            if(up[i]<'0'||up[i]>'9')
                return false;
        }
        for(int i=0;i<down.size();i++)
        {
            if((down[i]=='+'||down[i]=='-')&&i==0)
                continue;
            if((down[i]=='+'||down[i]=='-')&&i!=0)
                return false;
            if(down[i]=='.')
                return false;
            if(down[i]<'0'||down[i]>'9')
                return false;
        }
        return true;
    }

};
牛客

字符流中第一个不重复的字符

一个维护当前首次出现的字符顺序表,一个维护出现的字符数目表

class Solution
{
public:
    string donser;
    void Insert(char ch)
        donser=donser.insert(donser.size(),1,ch);     
    char FirstAppearingOnce()
    {
        char first=donser[0];
        vector<char>vec;
        vector<char>::iterator it;
        map<char,int>mp;
        for(int i=0;i<donser.size();i++)
        {
            it=find(vec.begin(),vec.end(),donser[i]);
            if(it==vec.end()&&mp[donser[i]]==0)
                vec.push_back(donser[i]);
            else if(it!=vec.end()&&mp[donser[i]]!=0)
                vec.erase(it);
            mp[donser[i]]++;
        }
        if(vec.size()==0)
            return '#';
        return *(vec.begin());
    }

};
牛客

猜你喜欢

转载自www.cnblogs.com/dzzy/p/12275518.html