【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
题目分析:
一、没有复杂度的要求
二、先顺序遍历字符串,再把每次遍历的得到的字符,在整个字符串中查找(注意:查找时要过滤掉当前字符的索引)
算法实现:
#include <stdio.h> #include <string.h> /* ** 在@str中查找@c,会过滤掉@num所在的字符 */ char *str_chr(const char *str, char c, int num) { int len = strlen(str); char *re = str; int i=0; for(; i<len; i++) { if(i == num) { re++; continue; } if(*re == c) return re; re++; } return NULL; } char find_once_char_in_str(const char *str) { int i=0; int len = strlen(str); for(; i<len; ++i) { if(str_chr(str, str[i], i) == NULL) return str[i]; } return 0; } int main() { char *str = "aabadccdebff7e"; printf("---> %c\n", find_once_char_in_str(str)); return 0; }