精华内容
下载资源
问答
  • 请编写程序,一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。 所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词...

    点击链接PTA-Python-AC全解汇总

    题目:
    请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。

    所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。

    输入格式:
    输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。

    输出格式:
    在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。

    随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。

    输入样例:

    This is a test.
    
    The word "this" is the word with the highest frequency.
    
    Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee.  But this_8 is different than this, and this, and this...#
    this line should be ignored.
    

    输出样例:(注意:虽然单词 the 也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序, the 排第3位,所以不输出。)

    23
    5:this
    4:is
    

    我的思路:
    一行行读取数据,这行出现了#则停止;
    每一行把除了字母、数字、#、_以外的所有字符全部替换成空格;
    截取这一行#前面的部分(没有则整行);
    然后再用split隔开所有单词;
    把单词统计到dict:word_times里;

    所有行结束后,根据value降序排序,输出前面10%个;
    但是不知道为什么我注释的那行写法不行,两个case过不去,求大佬指点!

    我的代码:

    word_times=dict()
    cnt_word=0
    flag=True
    while flag:
        string = input()
        string = string.lower()
        flag = string.find("#")==-1
        for x in string:
            if x.isalnum()==False and x!="_" and x!="#":
                string = string.replace(x, " ")#全部用" "隔开
        string = string.split("#")[0].split()#只要#前面的
        for i in range(len(string)):
            if string[i]!="":
                string[i]=string[i][:15]
                if string[i] in word_times.keys():
                    word_times[string[i]]+=1
                else:
                    word_times[string[i]]=1
                    cnt_word+=1
    # 不知道为什么这样写后两个case会错误
    # word_times=sorted(word_times.items(),key=lambda x:x[1],reverse=True)
    word_times=sorted(word_times.items(),key=lambda x:(-x[1],x[0]))
    print(cnt_word)
    for i in range(cnt_word//10):
        print("%s:%s"%(word_times[i][1],word_times[i][0]))
    
    展开全文
  • 194 统计月利润中文本型数字的个数 376 195 判断商品的盈利情况是否良好 377 196 根据员工工资计算员工的个人所得税 379 ◎条件判断函数 381 197 根据员工的各项考核成绩判断员工是否合格 381 198 判断...
  • 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后...

    点击链接PAT乙级-AC全解汇总

    题目:
    文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba

    解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc

    本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

    输入格式:
    输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过 1000 个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过 1MB。

    输出格式:
    根据要求压缩或解压字符串,并在一行中输出结果。

    输入样例 1:

    C
    TTTTThhiiiis isssss a   tesssst CAaaa as
    

    输出样例 1:

    5T2h4is i5s a3 te4st CA3a as
    

    输入样例 2:

    D
    5T2h4is i5s a3 te4st CA3a as10Z
    

    输出样例 2:

    TTTTThhiiiis isssss a   tesssst CAaaa asZZZZZZZZZZ
    

    我的代码:

    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<string>
    #include<set>
    #include<map>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    #include<cstring>
    #include<sstream>
    using namespace std;
    //有的时候题目是一起做的,所以会有不需要的头文件
    
    int main()
    {
        char c;
        scanf("%c",&c);
        getchar();//如果是scanf("%c\n",&c)case3会报错
        string src;
        getline(cin,src);
        if(c=='C')//压缩
        {
            for(int i=0;i<src.size();i++)
            {
                if(src[i]==src[i+1])
                {
                    int j=i+1;
                    while(j<src.length()&&src[j]==src[i])j++;
                    int num=j-i;
                    string temp=to_string(num);
                    temp+=src[i];
                    src.replace(i,j-i,temp);//所有相同字母替换
                }
            }
        }
        else //解压
        {
            if(src.length()==0)cout<<" ";//case 2
            else
            for(int i=0;i<src.size();i++)//解压的时候遍历完整
            {
               if(src[i]>='0'&&src[i]<='9')
               {
                   int j=i+1;
                   while(j<src.length()&&src[j]>='0'&&src[j]<='9')j++;
                   int num=stoi(src.substr(i,j-i));
                   string temp;
                   while(num-->0)temp+=src[j];
                   src.replace(i,j-i+1,temp);//数字和后一个字母替换
               }
            }
        }
        cout<<src;
        return 0;
    }
    

    注意:如果是scanf("%c\n",&c)case3会报错,我也不知道为什么,必须要用getchar();
    注意:case 2解压输出一个空格的情况;

    展开全文
  • 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后...

    立志用更少的代码做更高效的表达


    Pat乙级最优化代码+题解+分析汇总——>传送门


    文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。

    解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc。

    本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

    输入格式:
    输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过 1000 个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过 1MB。

    输出格式:
    根据要求压缩或解压字符串,并在一行中输出结果。

    输入样例 1:
    C
    TTTTThhiiiis isssss a tesssst CAaaa as
    输出样例 1:
    5T2h4is i5s a3 te4st CA3a as

    输入样例 2:
    D
    5T2h4is i5s a3 te4st CA3a as10Z
    输出样例 2:
    TTTTThhiiiis isssss a tesssst CAaaa asZZZZZZZZZZ


    解析

    考虑这两个样例:

    样例1:
    C
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    样例2:
    D
    123C
    样例3:
    C
    ABCDEFG

    本题的难点就在于如何处理10以上的数字。

    对于编码,可以用循环查找字符出现的次数,然后转化成字符串赋值。

    对于解码,可以用循环查找数字的位数,然后转化成对应数量的字符。

    具体见代码


    代码

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
    	char c; cin >> c; 
    	getchar();
    	string s, s1; getline(cin, s);
    	if(c == 'C') {
    		for(int i = 0; i < s.length(); i++) {
    			char c = s[i];
    			int num = 0;
    			while(s[i] == c) {
    				i++; num++;
    			}
    			i--; 
    			if(num > 1) {
    				string s2;		 
    				stringstream ss; ss << num;
    				ss >> s2;
    				s1 += s2; 
    			} 
    			s1 += c; 
    		}
    		
    	} else {
    		for(int i = 0; i < s.length(); i++) {
    			char c = s[i];
    			if(isdigit(c)) {		//如果是数字 
    				int num = c-'0'; 	
    				while(isdigit(s[i+1])) { //统计数字的个数 
    					i++;
    					num = num*10+(int)(s[i]-'0');
    				} 
    				for(int j = 0; j < num; j++) //赋值 
    					s1 += s[i+1];
    				
    				i++;
    			} else {		//如果不是数字,直接加 
    				s1 += s[i];
    			}
    		}
    	}
    	cout <<s1; 
    	return 0;
    } 
    

    耗时

    在这里插入图片描述


    每日一句

    唯有经历过栉风沐雨般的人生,方能显得淡定从容。

    展开全文
  • 本书既可以作为函数速查工具手册,又可以作为丰富函数应用案例宝典,适合Excel 公式与函数有需求读者阅读。 第1章 公式与函数基础 1 1.1 了解公式 1 1.1.1 公式组成部分 1 1.1.2 数据类型及其相互转换 2...
  • 计算特定的一组单元格中,满足条件的单元格的个数文本格式的数字转换成真正的数字 设置页码 Excel表格里如何插入页码的? 如何设置页脚首页为第5页 表格的页脚问题 无拘无束的页眉 打印表头 Excel打印中如何不显示...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    计算特定的一组单元格中,满足条件的单元格的个数文本格式的数字转换成真正的数字 设置页码 Excel表格里如何插入页码的? 如何设置页脚首页为第5页 表格的页脚问题 无拘无束的页眉 打印表头 Excel打印中如何不显示...
  • 5.3.2 计算单元格中指定子串的个数 5.3.3 把数字表示成序数词 5.3.4 为列数确定列字母 5.3.5 从具体路径中提取文件名 5.3.6 提取字符串的第一个词 5.3.7 提取字符串的最后一个单词 5.3.8 提取字符串中除第一...
  • 5.3.2 计算单元格中指定子串的个数 5.3.3 把数字表示成序数词 5.3.4 为列数确定列字母 5.3.5 从具体路径中提取文件名 5.3.6 提取字符串的第一个词 5.3.7 提取字符串的最后一个单词 5.3.8 提取字符串中除第一...
  • Python Cookbook

    2013-07-31 22:33:26
    12.2 计算文档中标签的个数 444 12.3 获得XML文档中的文本 445 12.4 自动探测XML的编码 447 12.5 将一个XML文档转化成Python对象树 449 12.6 从XML DOM节点的子树中删除仅有空白符的文本节点 451 12.7 解析...
  • 文秘应用 统计报销费用大于500元的个数 5.4.7 SUMIF函数 5.4.8 SUMPRODLJcT函数 5.4.9 RANK函数 5.4.10 VLoOKuP函数 5.4.11 INDEx函数 5.4.12 MATcH函数 chapter 06 数据的有效保护 6.1 工作簿的保护 6.1.1 设置密码...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体字...
  • 实例044 获取字符串中汉字的个数 实例045 批量替换某一类字符串 实例046 字符串进行加密与解密 3.3 常用数字处理技术 实例047 判断输入的货币值是否为数字 实例048 计算结果进行四舍五入 实例049 商品...
  • 实例044 获取字符串中汉字的个数 实例045 批量替换某一类字符串 实例046 字符串进行加密与解密 3.3 常用数字处理技术 实例047 判断输入的货币值是否为数字 实例048 计算结果进行四舍五入 实例049 商品...
  • 实例044 获取字符串中汉字的个数 实例045 批量替换某一类字符串 实例046 字符串进行加密与解密 3.3 常用数字处理技术 实例047 判断输入的货币值是否为数字 实例048 计算结果进行四舍五入 实例049 商品...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  •  实例044 获取字符串中汉字的个数 57  实例045 批量替换某一类字符串 58  实例046 字符串进行加密与解密 59 3.3 常用数字处理技术 61  实例047 判断输入的货币值是否为数字 61  实例048 计算结果进行...
  • 实例044 获取字符串中汉字的个数 57 实例045 批量替换某一类字符串 58 实例046 字符串进行加密与解密 59 3.3 常用数字处理技术 61 实例047 判断输入的货币值是否为数字 61 实例048 计算结果进行四舍五入 62 实例...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机...
  • 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机...
  • 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机...
  • 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机...
  • 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机...
  • 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 实例075 获取字符串中汉字的个数 实例076 批量替换某一类字符串 实例077 把异常与错误信息显示到窗体中 实例078 从字符串中分离文件路径、文件名及扩展名 实例079 判断手机号的合法性 实例080 用字符串构建器...
  • 实例075 获取字符串中汉字的个数 实例076 批量替换某一类字符串 实例077 把异常与错误信息显示到窗体中 实例078 从字符串中分离文件路径、文件名及扩展名 实例079 判断手机号的合法性 实例080 用字符串构建器...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

对文本的个数汇总