在字符串中查找第一次出现的字符(栈和队列)
时间: 1ms 内存:1000M
描述:
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
输入:
输入:
abaccdeff
输出:
输出:
b
示例输入:
believable
示例输出:
i
提示:
参考答案(内存最优[748]):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
typedef struct{
char *base;
char *top;
int stacksize;
}Stack;
void Initstack(Stack *S){
S->base=malloc(sizeof(char)*MAXSIZE);
S->top=S->base;
S->stacksize=MAXSIZE;
}
void Push(Stack *S,char e){
*S->top++=e;
}
int main()
{
char p,*q,*t;
Stack s;
Initstack(&s);
while((p=getchar())!=EOF){
Push(&s,p);
}
for(q=s.base;q<s.top-1;q++){
for(t=q+1;t<s.top;t++)
if(*q==*t)
break;
if(t==s.top)
break;
}
printf("%c",*q);
return 0;
}
参考答案(时间最优[0]):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
typedef struct{
char *base;
char *top;
int stacksize;
}Stack;
void Initstack(Stack *S){
S->base=malloc(sizeof(char)*MAXSIZE);
S->top=S->base;
S->stacksize=MAXSIZE;
}
void Push(Stack *S,char e){
*S->top++=e;
}
int main()
{
char p,*q,*t;
Stack s;
Initstack(&s);
while((p=getchar())!=EOF){
Push(&s,p);
}
for(q=s.base;q<s.top-1;q++){
for(t=q+1;t<s.top;t++)
if(*q==*t)
break;
if(t==s.top)
break;
}
printf("%c",*q);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。