第一个只出现一次的字符
2015-09-15 15:37
302 查看
如果不考虑时间复杂度,则较简单的算法为:
如果要求时间复杂度为O(n),则可以参考下面的一种实现:
private static string FirstNotRepeatingChar1(string str) { for (int i = 0; i < str.Length; i++) { if (str.IndexOf(str.ElementAt(i)) == str.LastIndexOf(str.ElementAt(i))) { return str.ElementAt(i).ToString(); } } return string.Empty; }
如果要求时间复杂度为O(n),则可以参考下面的一种实现:
private static char FirstNotRepeatingChar2(string str) { if (string.IsNullOrEmpty(str)) { return '\0'; } char[] array = str.ToCharArray(); const int size = 256; // 借助数组来模拟哈希表,只用1K的空间消耗 uint[] hastTable = new uint[size]; // 初始化数组 for (int i = 0; i < size; i++) { hastTable[i] = 0; } for (int i = 0; i < array.Length; i++) { hastTable[array[i]]++; } for (int i = 0; i < array.Length; i++) { if (hastTable[array[i]] == 1) { return array[i]; } } return '\0'; }
相关文章推荐
- Linux安装配置apache
- How draw a stem -and -leaf & box-plot display by R.or Python
- easyloader.js源代码分析
- Android - 判断网络状态
- tcp窗口机制(写的最简单精炼的文章)
- 个人学习笔记---Linux内存:内存管理的实质
- Linux内存管理之mmap详解 http://blog.chinaunix.net/uid-26669729-id-3077015.html
- 列表项中包含按钮的ListView的点击事件的响应
- 第一支小爬虫
- 数据结构之——归并排序
- 每日学习心得:$.extend()方法和(function($){...})(jQuery)详解
- Badboy录制
- JS实现带有抽屉效果的产品类网站多级导航菜单代码
- jQuery焦点图切换特效代码分享
- 【投稿】iOS蓝牙开发(一)蓝牙相关基础知识
- mysql语句与sql语句的部分对比
- SQLite数据库框架ORMLite与GreenDao的简单比较
- IT
- oracle v$database 视图
- java apache commons HttpClient发送get和post请求的学习整理