• 1170-比较最小字符出现的次数


    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 }
  • 相关阅读:
    在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
    线程的5种状态详解
    哈希表(Hash Table)原理及其实现 【转载】
    notify() 和 notifyAll() 有什么区别? wait()
    B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因 【转】
    pthread_join和pthread_detach的用法 【】转载】
    什么是进程?什么是线程
    进程间的五种通信方式介绍【转载】
    81. Search in Rotated Sorted Array II
    33. Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/hehesunshine/p/11577094.html
Copyright © 2020-2023  润新知