02:找第一个只出现一次的字符
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入
一个字符串,长度小于100000。
输出
输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
#include
using namespace std;
string s;
char c[strlen(s.c_str())]={0};
int a[strlen(s.c_str())]={0};
int cz(int x)
{
for(int i=0;i<strlen(s.c_str());i++)
{
if(c[i]==x)
{
return i;
}
}
return -1;
}
int sc()
{
for(int i=0;i<strlen(s.c_str());i++)
{
if(a[i]==1)
{
cout<return 0;
}
}
cout<<"no";
return 0;
}
int main()
{
getline(cin,s);
int z,g=0;
for(int i=0;i<strlen(s.c_str());i++)
{
if(cz(s[i])==-1);
{
c[g]=s[i];
a[g]=1;
g++;
continue;
}
else
{
a[cz(s[i])]++;
}
}
sc();
return 0;
}
array bound is not an integer constant before ']' token
数组长度需要指定常量
题目中已经约定:一个字符串,长度小于100000
那么就char a[100001] = {0}可以了
emmmm 你这里的strlen用法有问题啊,你可以关注一下这些相关的长度函数 sizeof(),strlen(), length()这些长度都是怎样的,以及求得什么东东
你看下面,strlen(s.c_str())求得得长度是0,那么你规划得这个数组大小是0.。。。
直接用string不行?非得再改成数组?直接用string::size()