思路:题目要求在一串字符串中输出个数较多的那个,采用string字符串,将每一个string放入vector容器中,两层for循环,依次比较是否相等,输出个数较多的,虽然时间复杂度为O(n²),但思路比较简单易懂
#include<string>
#include<iostream> //cin输入的库函数
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
int n,max,count,k; //max记录每次输入次数最多的个数,count作为自增的指示
string s;
vector<string> vi;
while(cin>>n&&n) //输入n且n不为0
{
vi.clear();
getchar(); //吸收换行
max=0;
for(int i=0;i<n;i++)
{
cin>>s;
vi.push_back(s); //输入s并放入容器中
}
vector<string>::iterator it=vi.begin(); 通过迭代器访问,it指示容器中第一个元素的位置
for(int i=0;i<n;i++)
{
count=0;
for(int j=0;j<n;j++) //容器中每个s都和所有的s比较一遍
{
if(*(it+i)==*(it+j)) count++; //如果有相等的元素,count++
}
if(count>max) //如果相等元素的个数大于max,则将count赋值给max
{
max=count;
k=i; //记录此时i的位置
}
}
cout<<*(it+k)<<endl; 输出第k个元素的内容并换行
}
return 0;
}