在一个长为
字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
数据范围:
,且字符串只有字母组成。
要求:空间复杂度
,时间复杂度
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
#include <stdio.h>
int FirstNotRepeatingChar(char* str ) {
// write code here
//ASCII码只有256个
char count[256] = {0};
//定义指针,用来确定数据写入的位置
char* count_p = str;
//第一次遍历为了取出所有字符的值
while (*count_p != '\0') {
count[*count_p]++;
count_p++;
}
//重置指针
count_p = str;
int out_put_num = 0;
//第二次开始寻找只出现一次的字符
while (*count_p != '\0') {
if(count[*count_p] == 1){
return out_put_num;
}
count_p++;
out_put_num++;
}
//如果没找到输出-1
return -1;
}
int FirstNotRepeatingChar(char* str ) {
// write code here
int num[123]={0};
if(str==NULL||str==0)
return -1;
int n=strlen(str);
int min=-1;
int count=0;
for(int i=0;i<n;i++)
{
num[str[i]]++;
}
for(int j=65;j<123;j++)
{
if(num[j]==1)
{
for(int i=0;i<n;i++)
{
if(str[i]==(char)j)
{
count++;
if(count==1)
{
min=i;
}
else
{
if(i<min)
min=i;
}
}
}
}
}
if(min==-1)
return -1;
else
return min;
}