在一个长为
字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -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; }