字符串的输出
来源:互联网 发布:mac常用软件推荐 2016 编辑:程序博客网 时间:2024/06/05 06:49
360面试题
- 将一个字符串中第一次只出现一次的字母打印出来
- 解决思路
- 方案一
- 在读取到每一个字符,对后方的字符进行遍历结果,直到有一个只出现一次的字符结束,时间复杂度高
- 方案二
- 第一次读取字符时,采用Hash表存储字符,当字符出现的次数计入hash表,第二次遍历字符串中的字符时,读取到一个在Hash表中的只出现一次的字符就结束了。
- 方案一
#include<stdio.h>char getOneShowFirst(char *str);char getOne(char *str);int main(){ char *p ="abcdabcfef"; char ch ='\0'; ch = getOneShowFirst(p); printf("第一次出现的字符是:%c",ch); ch = getOne(p); printf("第一次出现的字符是:%c",ch);}//使用HashTable可以将复杂率降低,将算法复杂度为n方的算法,复杂度将为2n,也就是nchar getOneShowFirst(char *str){ char hashtable[256] ={0}; //对应assic码中的所有字符都可以被存储 char *p = str; char ch='\0'; //第一次循环用于记录 while(*p!='\0')//判断是否是字符串结束 { ch = *p; hashtable[(*p++)]++;//以字符对应的assic码为key,然后有一个就加一个 } p = str; //第二次循环用于查找第一个只出现一次的字符 while(*p!='\0') { ch = *p; if(hashtable[ch]==1) { break; } } return ch;}char getOne(char *str){ int i = 0; int j = 0; int len = strlen(str); char ch = '\0'; char *p = str; char flag = 0; for(i=0;i<len;i++) { ch = *p; for(j=i+1;j<len;j++) { if(ch == p[j]) { flag = 1; break; } } if(flag == 0) { break; } flag = 0; } return ch;}
0 0
- 字符串的逆向输出
- 字符串的遍历输出
- 字符串的逆序输出
- 字符串的倒序输出
- 字符串的反转输出
- 字符串的输出
- 字符串的倒序输出!
- 字符串的输出处理
- 字符串的输出
- 字符串的逆序输出
- 字符串的输出
- 字符串的反转输出
- 字符串的倒序输出
- 字符串的输入、输出
- 字符串的倒序输出
- 字符串的排列输出 和组合输出
- 捕捉 OutputDebugString 输出的字符串
- 格式化字符串的输出格式
- java中的移位操作
- 九度oj--开始
- Quick plot of all variables
- 设置Office 365移动设备管理MDM服务——创建设备安全策略
- SQL server 创建与删除数据库,数据表,约束的创建与删除语法
- 字符串的输出
- 使用libjpeg进行JPEG图像解码
- Solr之——solr5.2.1环境搭建
- Android 开发工程师面试指南
- iOS查看崩溃信息
- Play的model层,数据库配置
- leetcode No60. Permutation Sequence
- 正则表达式
- 文章标题