元宵节后第一发(数据决定程序结构)

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)(代码片段

这才是程序员的元宵节打开方式:亲手做一盏花灯