首先(提出问题):输出字符串中第一个只出现一次的字符
这个题目是一个面试题目,题目要求是使用两种以上的方法来解决这个问题。
其次(分析问题):题目很简单,字符串中第一个只出现一次的字符?那么,我们首先将字符串中出现的字符默认为小写的26个字母吧(添加一些其他的字符一样处理,因为只要知道他们的ASCII码值就可以了)
最后(解决问题):
首先我将作者原来的代码给贴出来:
C++类代码:
#include "stdafx.h" #include <iostream> #include <string> using namespace std; int main(int argc, char* argv[]) { string s="afasdfc"; int size=s.size(); for(int i=0;i<size;i++) { if(s.find_first_of(s[i])==s.find_last_of(s[i])) { cout<<"the first char is : "<<s[i]<<endl; break; } } return 0; }
在作者的代码中间使用了两个函数,最开始我是不知道这是啥意思的。网上给百度了一下函数的含义:
find_first_of()和 find_last_of():查看链接:http://blog.csdn.net/zhenyusoso/article/details/7286456
讲的是在字符串中查找到()中的字符,并返回对应的下标。
那么我是不知道这个函数的,想法也和作者的很不一样——通过统计每个字符出现次数,最后在确定第一个是什么