字符串碎片(字符串)//strcmp函数的奇巧淫技(偷笑)//一维数组转化为二维数组解决问题
2018-01-04 16:26
169 查看
问题 E: 字符串碎片(字符串)
一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,”aaabbaaac”是由下面碎片组成的:”aaa”,”bb”,‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。
所有碎片的平均长度 = 所有碎片长度之和/碎片个数
输入
测试次数t
每组测试数据为一行字符串
输出
对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。
样例输入
4
aaabbaaac
szuszuszuszu
aaaaaa
apple
样例输出
aaa bb c 2.25
s z u 1.00
aaaaaa 6.00
a pp l e 1.25
hint:
我们先解决平均长度这个问题,其实平均长度只要算出有多少个不同的字符串碎片,字符串总长度/字符串碎片个数
然后我们想办法输出字符串碎片,我们只要先把字符串用一维字符数组的形式输入,然后把每个字符串碎片转化为二维数组里面的每一行,再输出这个二维数组就好了
**这里有一个难点那就是如果有两个字符串碎片是一样的那只能算一种只能输出一次的问题,看代码解析
一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,”aaabbaaac”是由下面碎片组成的:”aaa”,”bb”,‘c’。输入字符串,请计算字符串的所有碎片及所有碎片的平均长度。
所有碎片的平均长度 = 所有碎片长度之和/碎片个数
输入
测试次数t
每组测试数据为一行字符串
输出
对每组测试数据,输出字符串中按顺序出现的碎片和所有碎片的平均长度(相同碎片只输出一次,平均长度保留2位小数)。
样例输入
4
aaabbaaac
szuszuszuszu
aaaaaa
apple
样例输出
aaa bb c 2.25
s z u 1.00
aaaaaa 6.00
a pp l e 1.25
hint:
我们先解决平均长度这个问题,其实平均长度只要算出有多少个不同的字符串碎片,字符串总长度/字符串碎片个数
然后我们想办法输出字符串碎片,我们只要先把字符串用一维字符数组的形式输入,然后把每个字符串碎片转化为二维数组里面的每一行,再输出这个二维数组就好了
**这里有一个难点那就是如果有两个字符串碎片是一样的那只能算一种只能输出一次的问题,看代码解析
#include<stdio.h> #include<string.h> int main() { int i,t,n,m; scanf("%d",&t); getchar(); while(t--) { char arr[100]={'\0'},brr[20][20]={'\0'}; //最后字符数组初始化时定义成都为'\0',这样在后面的操作中就不用封口。 gets(arr); double l=strlen(arr); for(i=0,n=0,m=0;i<strlen(arr);i++,m++) { brr [m]=arr[i]; if(arr[i]!=arr[i+1]) { n++; m=-1; //这里不是0,因为for哪里还会加一的 } } /*这里是重点,每次输出时先用strcmp函数判断是否与之前的字符串碎片相同,是否已经输出过了。*/ for(int j=0;j<n;j++) { int mark=1; for(int k=0;k<j;k++) { mark=strcmp(brr[j],brr[k]); if(mark==0) break; } if(mark!=0) printf("%s ",brr[j]); } printf("%.2lf\n",l/n); } return 0; }
相关文章推荐
- 将流信息转化成字符串并解决乱码的问题
- 用字符串解决大数问题
- android Button上面的英文字符串自动大写的问题解决
- ssh_crm:客户行业统计功能,使用easyUI,开发用户列表,用户注册,用户登陆,解决json字符串问题
- 解决python文件字符串转列表时遇到空行的问题
- 解决超长字符串分页问题
- C#编程中的Image/Bitmap与base64的转换及 Base-64 字符数组或字符串的长度无效问题 解决
- 解决用xstream生成的xml字符串中间有空格的问题
- 解决从tomcat和Resin服务器下载apk,ipa文件自动转化为zip的问题
- Python字符串的encode与decode研究心得乱码问题解决方法
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
- Java中String类(字符串操作)的10个常见问题和解决方法
- Advanced .NET Debugging: Managed Heap and Garbage Collection(转载,托管堆查内存碎片问题解决思路)
- Java-J2SE学习笔记-字符串转化为二维数组
- 字符串全排列问题(递归解决有重复字符问题)
- firefox英文字符串不自动换行问题的解决方法
- 解决PHP字符串长度不一致的问题
- 转化一下解决问题的思路,弯道超车
- 解决字符串乱码的问题
- JS 字符串编码函数(解决URL特殊字符传递问题):escape()、encodeURI()、encodeURIComponent()区别详解