1、Vector容器的用法(STL数据库重要成员)
- 定义:vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
- vector<数据类型>变量名:vector<int>a
- 包含头文件:#include<vector>
- 基本指令:
- a.empty():判断是否为空
- a.size():求容器的大小
- a.push_back(元素):把元素插入到容器a的末端
- a.pop_back():删除最后一个元素
2、使用冒泡排序
3、本题思路
- 先判断输入的容器里内容是否为空
- 遍历word组所有的字符串,求出每一个字符串最小字符(利用冒泡排序找出最小元素)出现的次数,存入一个容器b中
- 遍历queries中的字符串,求第一个字符串中最小字符出现的次数分别和b中的数值比较,比较结果存到answer里面,循环遍历
- 输出answer
4、结果
- 时间长,因为发现有的语句可以重复调用,但我重新写了一遍,导致语句很多
5、代码
1 class Solution { 2 public: 3 vector<int> numSmallerByFrequency(vector<string>& queries, vector<string>& words) 4 { 5 vector<int>answer; 6 vector<int>wordanswer; 7 vector<int>queriesanswer; 8 if(!words.empty()&&!queries.empty()) 9 { 10 for(int i=0;i<words.size();i++) 11 {//遍历每一个word字符串组中的每一个字符串 12 string str; 13 str=words[i]; 14 int n=0;//代表最小字符出现的次数 15 if(str.size()==1) n=n+1; 16 else{ 17 for(int j=0;j<str.size()-1;j++) 18 {//遍历字符串中的每一个字符,利用冒泡排序找到最小字符 19 if(str[j]<str[j+1]) 20 { 21 char temp; 22 temp=str[j]; 23 str[j]=str[j+1]; 24 str[j+1]=temp; 25 } 26 } 27 char chartemp; 28 chartemp=str[str.size()-1];//获取最小字符 29 for(int k=0;k<str.size();k++){//获取最小字符出现的次数 30 if(str[k]==chartemp) n++; 31 } 32 } 33 wordanswer.push_back(n); 34 } 35 for(int i=0;i<queries.size();i++) 36 { 37 int m=0;//代表最小字符出现的次数 38 string str=queries[i]; 39 40 if(str.size()==1) m=m+1; 41 else 42 { 43 for(int j=0;j<str.size()-1;j++) 44 {//遍历字符串中的每一个字符,利用冒泡排序找到最小字符 45 if(str[j]<str[j+1]) 46 { 47 char temp; 48 temp=str[j]; 49 str[j]=str[j+1]; 50 str[j+1]=temp; 51 } 52 } 53 char chartemp; 54 chartemp=str[str.size()-1];//获取最小字符 55 for(int k=0;k<str.size();k++) 56 {//获取最小字符出现的次数 57 if(str[k]==chartemp) m++; 58 59 } 60 } 61 int time=0; 62 for(int i=0;i<wordanswer.size();i++){ 63 if(wordanswer[i]>m) time=time+1; 64 } 65 answer.push_back(time); 66 } 67 } 68 return answer; 69 } 70 };
2019-09-26
6、更新,,,
重新看之前写的程序,确实冒泡排序找最小字符的时候,应该定义一个函数,然后去调用,这样程序语句就看着少很多了!!!
1 #include<string> 2 #include<vector> 3 using namespace std; 4 int findminstr(vector<string>s)//利用冒泡排序遍历字符串,遍历一次,最小字符在最右 5 { 6 for (int i = 0; i < s.size(); i++) 7 {//遍历每一个word字符串组中的每一个字符串 8 string str; 9 str = s[i]; 10 int n = 0;//代表最小字符出现的次数 11 if (str.size() == 1) n = n + 1; 12 else{ 13 for (int j = 0; j < str.size() - 1; j++) 14 {//遍历字符串中的每一个字符,利用冒泡排序找到最小字符 15 if (str[j] < str[j + 1]) 16 { 17 char temp; 18 temp = str[j]; 19 str[j] = str[j + 1]; 20 str[j + 1] = temp; 21 } 22 } 23 24 }