在字符串中找出第一个只出现一次的字符
2015-11-01 22:51
239 查看
题目:在字符串中找出第一个只出现一次的字符。
如输入“abaccdeff”,则输出'b'。
1、判断每个字符与其他字符有多少个不相同,定义数组str,如果第i个字符只出现一次,则str[i]为总字符数减1;出现两次,str[i]为总字符数减2,以此类推。
代码如下:
代码如下:
如输入“abaccdeff”,则输出'b'。
1、判断每个字符与其他字符有多少个不相同,定义数组str,如果第i个字符只出现一次,则str[i]为总字符数减1;出现两次,str[i]为总字符数减2,以此类推。
代码如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char arr[]="abaccdeff"; int i,j,size,str[15]={0}; size=strlen(arr); for(i=0;i<size;i++) { for(j=0;j<size;j++) { if(arr[i]!=arr[j])//判断每个字符与其他字符有多少个不相同 str[i]++; } } for(i=0;i<sizeof(str)/sizeof(str[0]);i++) { if(str[i]==size-1)//如果一个字符只出现一次,则str[i]为总字符数减1。 { printf("one of the first:%c\n",arr[i]); break; } } system("pause"); return 0; }2、下标统计法:定义宏参数MAX,由于字符的ASCII范围为0~255共256个数,通过下标统计法求出各个字符出现的次数,然后经过while循环找到第一次只出现一次的字符。
代码如下:
#include<stdio.h> #include<stdlib.h> #define MAX 256 void find(char *str) { int arr[MAX]={0}; char *prt=str; while(*str) { arr[*str]++;//利用下标统计法求出各字符出现的次数 str++; } str=prt; while(*str) { if(arr[*str]==1) { printf("one of the first:%c\n",*str); break;//找到第一个只出现一次的字符就结束判断 } str++; } } int main() { char arr[]="abaccdeff"; find(arr); system("pause"); return 0; }
相关文章推荐
- 数据库链接字符串查询网站
- Flex字符串比较 还有Flex字符串操作
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#动态调整数组大小的方法
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- 详解Lua中的数组概念知识
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Perl中的列表和数组学习笔记
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)