题解 | #找出字符串中第一个只出现一次的字符#
找出字符串中第一个只出现一次的字符
https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4
#include <ctype.h> #include <stdbool.h> #include <stdio.h> #include <string.h> // 1. 得到字符串 // 2. 借助字符表快慢指针去重 // 3. 遍历去重后的字符串,找到第一个次数为1的字符并输出 int main() { char input[1010] = {0}; gets(input); int alpha[26] = {0}; int fast = 0; int slow = 0; int len = strlen(input); for(; fast < len; ++ fast) { ++ alpha[input[fast] - 'a']; if(alpha[input[fast]-'a'] == 1) { //第一次出现则保留 input[slow] = input[fast]; ++ slow; } //出现次数大于1则将此字符废弃掉 } for(int i = 0; i < slow; ++ i) { if(alpha[input[i]-'a'] == 1) { putchar(input[i]); return 0; } } printf("%d", -1); return 0; }