#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个的就是

京公网安备 11010502036488号