元宵节后第一发(数据决定程序结构)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元宵节后第一发(数据决定程序结构)相关的知识,希望对你有一定的参考价值。
放假回家好久没写代码了,来一发牛客网的题.(这个题再次说明我一直强调的问题数据的特性决定了程序结构)
题目描述
实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。
保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
/*
* 解题思路
* 1:可以用位图来做,由于是accii码,所以字符取值范围为0~255,只需建立一个256的整形数组扫描一遍前256个字符然后对字符
* 所对应的整形值+1即可,然后再扫一遍整形数组,有>2的值就返回false,否则返回true(但是本体不允许用额外存储空间)
*
* 2:双重扫描(由于本题不允许有额外的存储空间),但是只要扫描前256个字符即可(鸽巢原理)
*
* 3:排序:如果不限定accii码可以用排序做O(nlogn)的时间复杂度
*
* 其他大神的比较好的思路:
* Parition基于快速排序的partition,可以边排序边找重复,也即是每次partition之后,
* 判断中间key元素与两边元素是否相同,相同则返回false,不同再进行下一轮partition.
* 时间复杂度也是O(nlongn)。
*/
附带双重循环的代码:
1 public boolean checkDifferent(String iniString) { 2 // write code here 3 4 5 if(iniString == null || iniString.length() <= 0 || iniString.length() > 256) 6 { 7 return false; 8 } 9 10 int maxLen = iniString.length() > 256 ? 256 : iniString.length(); 11 12 for(int i = 0; i < maxLen; i++) 13 for(int j = i + 1; j < maxLen; j++) 14 { 15 if(iniString.charAt(i) == iniString.charAt(j)) 16 { 17 return false; 18 } 19 } 20 21 return true; 22 23 }
以上是关于元宵节后第一发(数据决定程序结构)的主要内容,如果未能解决你的问题,请参考以下文章
2018第一发:记一次Advanced Installer打包之旅
2018第一发:记一次Advanced Installer打包之旅
20172314 2018-2019-1《程序设计与数据结构》第四周学习总结
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段