• 洛谷入门5-字符串


    字符串的使用方法https://www.cnblogs.com/lanclot-/p/11142202.html

    string里的find方法:https://www.cnblogs.com/wkfvawl/p/9429128.html

    一、笨小猴

    解题:

    # include<iostream>
    # include<algorithm>
    # include<cmath>
    # include<string>
    # include<cstring>
    using namespace std;
    
    char word[100];
    int maxx=0,minn=100,sum[26]={0};
    bool isprime(int n)//判断素数
    {
        if(n<2)
        return 0;
        if(n==2)
        return 1;
        for(int i=2;i<=sqrt(n);i++)
        {
            if(n%i==0)
            return 0;
        }
        return 1;
    }
    int main()
    {
        cin>>word;
        int l=strlen(word);
        for(int i=0;i<l;i++)//遍历单词、字母加一
        {
            sum[word[i]-'a']++;
        }
        for(int i=0;i<26;i++)//遍历字母表,找出最多最少的字母
        {
            if(sum[i]>maxx)maxx=sum[i];
            if(sum[i]!=0&&sum[i]<minn)minn=sum[i];
        }
        int h=maxx-minn;
        if(isprime(h))
        {
            cout<<"Lucky Word"<<endl;
            cout<<h;
        }
        else if(!isprime(h))
        {
            cout<<"No Answer"<<endl;
            cout<<"0";
        }
        return 0;
    }

    二、标题统计

     解题:

    #include<iostream>
    #include<cstring>
    #include<stdio.h>
    using namespace std;
    
    char s[100]={0};
    int sum=0;
    int main()
    {
        /*gets(a)从标准输入设备读字符串函数,可以无限读取,以回车结束读取,a必须是字符型数组,strlen(a)记录a数组实际字符串长度*/
        gets(s);
        //统计标题字符
        for(int i=0;i<strlen(s);i++)
        {
            if(s[i]>='a'&&s[i]<='z')sum++;
            if(s[i]>='A'&&s[i]<='Z')sum++;
            if(s[i]>='0'&&s[i]<='9')sum++;
        }
        cout<<sum;
        return 0;
    }

    三、统计单词数

     例:输入一个句子,计算单词数

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    
    int main()
    {
        char a[100010]={0};
        int state,cnt=0;//空格状态为0,字母状态为1
        gets(a);//输入字符数组,包括空格
        if(a[0]==' ')state=0;//判断第一个的状态
        else state=1;
        for(int i=0;a[i];i++)
        {
            if(a[i]==' ')//是空格
            {
                if(state==1)//前一个状态是字母
                    cnt++;
            }
            else//是字母
            {
                if(state==0)//前一个是空格就改变状态
                    state=1;
            }
        }
        if(state==1)//最后一个是字母要加1
        {
            cout<<cnt+1;
        }
        else cout<<cnt;
    
        return 0;
    }

    本题题解:

    # include<iostream>
    # include<string>
    using namespace std;
    
    
    int main()
    {
        string a;
        string b;
        getline(cin,a);//getline(cin,s)可以接受空格并输出,处于string流
        getline(cin,b);
        //输入的变为小写
        for(int i=0;i<a.length();i++){
            a[i]=tolower(a[i]);
        }
        for(int i=0;i<b.length();i++){
            b[i]=tolower(b[i]);
        }
        //字符串前后加空格,为了避免连在一起的字符串
        a=' '+a+' ';
        b=' '+b+' ';//防止单词出现在第一个和最后一个
        if(b.find(a)==string::npos){//找不到输出-1
            cout<<-1<<endl;
        }
        else
        {
            int pos1=b.find(a);
            int pos2=b.find(a);
            int sum=0;
            while(pos2!=string::npos)
            {
                sum++;
                pos2=b.find(a,pos2+1);
            }
            cout<<sum<<" "<<pos1;
        }
        return 0;
    }
  • 相关阅读:
    django admin日期变为可以修改
    djangoadmin模块
    mac添加oh my zsh
    Dockerfile文件详解
    CC++初学者编程教程(4) 安装Oracle12c于Windows Sever2012
    Keli Linux与网络安全(2)——初探Keli
    Keli Linux与网络安全(1)——在VMWare中安装Keli系统
    C语言的本质(12)——指针与函数
    C语言的本质(11)——指针与数组
    C语言的本质(10)——指针本质
  • 原文地址:https://www.cnblogs.com/Hfolsvh/p/13697853.html
Copyright © 2020-2023  润新知