• 题解 P1308 【统计单词数】


    小金羊发一篇不一样的题解:
    这个题解不是讲解法的,是讲算法的...
    众所周知,string在中被定义为是类型,
    这意味着我们可以将它作为int一样的类型使用。
    并且还有神奇的加减法:

    string str,str2;
    str2="Hello!";
    str=str2-'!'+' '+"world!";
    cout<<str;
    

    结果就是:Hello world!


    类型例子:


    string lowwers(string str)
    {//手写字符串该小写,死记! 
    	int len=str.size();
    	for (int i=0;i<len;i++)
    	{
    		str[i]=(str[i]>=65&&str[i]<=90)?str[i]+32:str[i];
    	}
    	return str;
    }
    

    哇塞,这也就是说我们可以写一写不一样的函数了!


    例子(输入):

    string inputs()
    {//输入,小写化,并且开头结尾加上' ' 
    	string temp;
    	getline(cin,temp);
    	return ' '+lowwers(temp)+' ';
    }
    

    甚至说,我们可以进行堆排序:
    传送:https://www.luogu.org/blog/jelly123/
    Code:

    string strsort(string str)
    {
        int len=str.size();
        for (int temp=0;temp<len;temp++)
        {
            q2.push(str[temp]);
        }
        string str2="";
        for (int temp=0;temp<len;temp++)
        {
            char tempchar=q2.top();
            str2=str2+tempchar;
            q2.pop();
        }
        return str2;
    }
    

    整个把字符串堆排出来!
    Code:

    #include <bits/stdc++.h>
    using namespace std;
    priority_queue<string,vector<string>,greater<string> >q1;
    //是的,你没有看错,
    priority_queue<char,vector<char>,greater<char> >q2;
    //由于小金羊不会其他排序,发一个堆排吧...
    //话说字符串堆排是不是太玄学了...
    //其实原理极其简单,入堆,出堆,返回,搞定。
    //然后做一个字符串的整体的堆排,就OK了。 
    int n,count=1;
    //整体变量
    string strsort(string str)
    {//字符串堆排,真玄学 
        int len=str.size();
        for (int temp=0;temp<len;temp++)
        {
            q2.push(str[temp]);
        }
        string str2="";//把要生成的字符串变成空的 
        for (int temp=0;temp<len;temp++)
        {
            char tempchar=q2.top();
            str2=str2+tempchar;
            q2.pop();
        }//生成完毕 
        return str2;//返回排好序的字符串 
    }
    int main()
    {
        scanf("%d",&n);
        if (n==1){putchar('1');return 0;}
        //一个字符串还能有多少种啊 
        string strs[n+1];
        //第一个字符串就不要了 
        for (int i=1;i<=n;i++)
        {cin>>strs[i];strs[i]=strsort(strs[i]);}
        //输入,并且对单个字符串排序 
        for (int i=1;i<=n;i++)
        {q1.push(strs[i]);}
        string strtemp=q1.top();q1.pop();
        for (int i=1;i<n;i++)
        {
            string temp=q1.top();q1.pop();
            if (temp!=strtemp){count++;}
            strtemp=temp;
        }
        printf("%d",count);
        return 0;
    }
    

    返回这个题,解:

    #include <iostream>
    #include <cstdio>
    #include <string>
    using namespace std;
    string lowwers(string str)
    {//手写字符串该小写,死记! 
    	int len=str.size();
    	for (int i=0;i<len;i++)
    	{
    		str[i]=(str[i]>=65&&str[i]<=90)?str[i]+32:str[i];
    	}
    	return str;
    }
    string inputs()
    {//输入,小写化,并且开头结尾加上' ' 
    	string temp;
    	getline(cin,temp);
    	return ' '+lowwers(temp)+' ';
    }
    int main()
    {
    	string pas,goal;
    	int pos=0,count=0,memory;//定位器 
    	goal=inputs();
    	pas=inputs();
    	pos=pas.find(goal,pos);
    	if (pos==-1)
    	{
    		cout<<pos;
    		return 0;
    	}
    	else
    	{
    		memory=pos;count++;
    		pos+=goal.size()-1;
    	}
    	while (pos<pas.size())
    	{
    		pos=pas.find(goal,pos);
    		if (pos==-1)
    		{
    			break;
    		}
    		else
    		{
    			count++;
    			pos=pos+goal.size()-1;
    		}
    	}
    	cout<<count<<' '<<memory;
    	return 0;
    }
    

    完成,善莫大焉!

  • 相关阅读:
    git init 后关联github仓库是发生错误:
    node mysql模块写入中文字符时的乱码问题
    Error: ER_BAD_FIELD_ERROR: Unknown column 'xxx' in 'where clause'
    安装MariaDB
    yum命令无效
    文档管理系统介绍
    RichTextBox文字处理控件属性介绍
    Android调用相册拍照控件实现系统控件缩放切割图片
    苹果5S指纹扫描识别传感器Touch ID有利于iPhone的安全性
    在服务器端将XML转换成HTML
  • 原文地址:https://www.cnblogs.com/jelly123/p/10385918.html
Copyright © 2020-2023  润新知