1.具体实现如下

    1. /***
    2. 功能:不用第三方库(意思是不要包含任何头文件),实现高效查找字符串中出现的第一个不重复字符
    3. ***/
    4. long map[0x128] = {0};
    5. /*
    6. 功能:获取ASCII字符串长度
    7. */
    8. int len(char* str)
    9. {
    10. int len = 0,index =0;
    11. while( str[index++] !='\0')len++;
    12. return len;
    13. }
    14. /*
    15. 功能:根据给定的字符串返回第一个出现的不重复字符
    16. 返回:成功返回对应的字符,失败返回-1
    17. */
    18. char get_one_char(char* str)
    19. {
    20. char tmp = 0;
    21. int i,j;
    22. /* 1.从头开始遍历每一个字符 */
    23. for(i=0;i<len(str);i++)
    24. {
    25. /* 2.获取当前字符 */
    26. tmp = str[i];
    27. /* 3.以字符作为索引在map数组对应的位置计数+1 */
    28. map[tmp] +=1;
    29. /* 4.从i+1开始遍历,寻找是否有一样的字符 */
    30. for(j=i+1;j < len(str); j++)
    31. {
    32. /* 5.如果有则map+1后跳出循环 */
    33. if( str[j] == tmp)
    34. {
    35. map[tmp] += 1;
    36. break;
    37. }
    38. }
    39. /* 6.如果当前字符在map中的索引位置里面的技术是1,说明没有重复,直接返回 */
    40. if(map[tmp] == 1)
    41. {
    42. return tmp;
    43. }
    44. }
    45. /* 7.如果执行到这里来了,返回-1 */
    46. return -1;
    47. }
    48. int main()
    49. {
    50. // 1.测试字符串
    51. char* str = "asdfkasldfkasdflsadkfl;sakdsldfkl;askl;efk;lkfl;sdfkals;dkfl;asfl;aklfkasl;fklqwzxcv";
    52. // 2.调用获取第一个不重复的字符函数
    53. char chr = get_one_char(str);
    54. // 3.如果等于-1直接返回
    55. if (chr == -1)
    56. return -1;
    57. // 4.输出找到的字符
    58. putchar(chr);
    59. //5.输出换行
    60. putchar('\n');
    61. }

    2.编译运行

    1. $ gcc -w repeat.c -o re && ./re
    2. e