• openjudge 1.12.5 统计单词数


    OpenJudge - 05:统计单词数


    解题思路:

    1.由题可得,有两个字符串a和b,a为被查找的单词,b为被查找的句子,在忽略大小写的情况下,判断b中含有几个a,并输出a第一次出现首单词的位置

    2.因为b字符串含有空格,所以a和b都用getline的方法获取字符串,并且遇到这种情况,都要使用两个getline的方法获取

    3.对于a和b字符串进行预处理,前后都加上空格,便于统一处理,这里注意,对于string字符串的操作,可以直接加上字符,如b='   'b+' ';如果想要加上字符串的方式,那么定义字符串c=" ";b=c+b+c不能直接b="  "+b+"  ";

    4.然后对于字符串a和b都进行大写转化为小写字母,开始遍历字符串b,如果该位置的字符b[i]==a[1];即字符串a的首字母如果和该位置相等的话,判断前一位和最后一位是否为空格,如果是,说明这个单词是独立的,不是被包含在别的单词中,那么开始判断,里面的每一项,设置一个check函数,有返回值的含参函数,比较剩余字符是否相等,如果相等的话,返回1,否则返回0

    5.如果判断结果为1的话,那么计数器累加,表示单词的出现数量加1,然后打标记,记录第一次出现的位置,注意要-1,因为b字符串加上了空格,所以改变了原来的位置

    6.如果没有找到这个单词的话,输出-1


    1. #include
    2. using namespace std;
    3. string a,b;
    4. bool check(int x)
    5. {
    6. for(int i=2;i<=a.length()-2;i++)//因为后面多加了一个空格,所以不用判断最后一位
    7. {
    8. if(a[i]==b[x+i-1])//如果对应位置上的字符相等,则继续
    9. continue;
    10. else//否则输出错误
    11. return false;
    12. }
    13. return true;
    14. }
    15. int main()
    16. {
    17. bool flag=0;
    18. int sum=0,ans;
    19. getline(cin,a);
    20. getline(cin,b);
    21. a=' '+a+' ';//首尾都加上空格,便于统一处理
    22. b=' '+b+' ';
    23. for(int i=0;i<=a.length()-1;i++)//将字符串ab都转化为小写字母
    24. {
    25. if(a[i]>='A'&&a[i]<='Z')
    26. a[i]=a[i]+32;
    27. }
    28. for(int i=0;i<=b.length()-1;i++)
    29. {
    30. if(b[i]>='A'&&b[i]<='Z')
    31. b[i]=b[i]+32;
    32. }
    33. for(int i=1;i<=b.length()-1;i++)
    34. {
    35. if(b[i]==a[1])//判断如果b中字符串的某个字符和a[1]相等
    36. if(b[i-1]==' '&&(b[i+a.length()-2]==' '))//判断这个下标的前一位和目标单词的后一位是否为空格
    37. if(check(i))//如果都满足,并且各个位上是否一致
    38. {
    39. sum++;//单词数加1
    40. if(flag==0)//存储第一次出现的位置
    41. {
    42. ans=i-1;//因为前面加了空格,所以要减一
    43. flag=1;//打标记,只记录第一次出现的位置
    44. }
    45. }
    46. }
    47. if(flag==0)
    48. cout<<-1;
    49. else
    50. cout<" "<
    51. return 0;
    52. }

  • 相关阅读:
    PCIE-Malformed tlp,UR,UC,CA
    垃圾收集器G1和ZGC、颜色指针(思维导图)
    Snap内部备忘录:制定60亿美元营收目标,未放弃AR长期愿景
    conda命令
    K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName
    pytest + yaml 框架 -4.用例参数化parameters功能实现
    CI/CD 持续集成与持续交付(1)
    linux配置静态ip ip和网关不在同一个网段
    【obs】x264编码:“buffer_size“
    【react基础02】编写函数式组件和类组件
  • 原文地址:https://blog.csdn.net/weixin_60869516/article/details/126899323