您的位置:首页 > 其它

day07之包含min函数的栈+查找一个字符串中第一个只出现两次的字符

2017-07-19 13:22 267 查看
实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)

class Stack
{
public:
void Push(int val)
{
s.push(val);
if(minstack.empty())
{
minstack.push(val);
}
else
{
int min = val > minstack.top() ? minstack.top():val;
minstack.push( min );
}
}
void  Pop()
{
assert(!s.empty());
assert(!minstack.empty() );
s.pop();
minstack.pop();
}

int Min()
{
assert(!minstack.empty());
return minstack.top();
}
private:
stack<int> minstack;
stack<int> s;
};


查找一个字符串中第一个只出现两次的字符

比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)

char  FirstTwoChar(const char *str)
{

assert(str);

char array[256] = { 0 } ;
const char *pcur = str;
while(*pcur)
{
array[ *pcur ]++;
pcur++;
}
pcur = str;
while(*pcur)
{
if(array[*pcur] == 2)
return *pcur;

pcur++;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指off 字符串
相关文章推荐