#include <stdio.h> #include<string.h> #include<malloc.h> /* 找出字符串中第一个只出现一次的字符 */ /* 思路:其实我一开始想用双指针,我想用一个slow和fast两个指针至于开始, 让slow固定 fast遍历整个字符串,如果fast有和slow相同的就退到开始重新找, slow++指向下一个字符固定,fast从第二个位置开始继续遍历整个字符串, 直到找到没有与slow重复的字符,那么slow就是第一个只出现一次的字符 但是想法是美好的没实现出来,技术太差了唉 有大佬会么,我也不知道想的对不对。。。 so我又想到了第二个方法 我在开辟一个整型数组用来存放每个字符出现的次数, 两次循环遍历字符串,如果有相同的就 ++,最后只有1个的就是 */ int main() { char* str = (char*)malloc(1000 * sizeof(char)); int a[1000] = {0}; //存放每个字符出现的次数 scanf("%s", str); int i, j; int len = strlen(str); for (i = 0; i < len; i++) { for (j = 0; j < len; j++) { if (str[i] == str[j]) a[i]++; } if (a[i] == 1) { printf("%c\n", str[i]); return 0; //注意这边要return 0;“return 0作用:是正常退出,表示这个函数已经被正常地执行完毕以跳出该程序。 不然就输出下面的-1; } } printf("%d\n", -1); return 0; free(str); }
思路:其实我一开始想用双指针,我想用一个slow和fast两个指针至于开始,
让slow固定 fast遍历整个字符串,如果fast有和slow相同的就退到开始重新找,
slow++指向下一个字符固定,fast从第二个位置开始继续遍历整个字符串,
直到找到没有与slow重复的字符,那么slow就是第一个只出现一次的字符
但是想法是美好的没实现出来,技术太差了唉
有大佬会么,我也不知道想的对不对。。。
so我又想到了第二个方法
我在开辟一个整型数组用来存放每个字符出现的次数,
两次循环遍历字符串,如果有相同的就 ++,最后只有1个的就是