【Java,面试】实现一个算法,确定一个字符串的所有字符是否全都不同

原创 2015年07月06日 23:02:27


//method to figure out if there's no duplicate char in a ASCII string

import java.lang.String


boolean isUniquedChars(String myString)
{
	if(myString.length() > 256)
		return false;
	
	boolean[] char_set = new boolean[256];
	for (int i = 0; i < myString.length(); i++)
	{
		int val = myString.charAt(i);
		if (char_set[val])
		{ return false; }
		char_set[val] = true;
	}
	return true;
}



//method 2
boolean isUniquedChars_method2(String str)
{
	if (str.length() > 256)
	{
		return false;
	}
	
	int checker = 0;
	for (int i = 0; i < str.length(); i++)
	{
		int val = str.charAt(i) - 'a';
		if (checker & (1 << val) > 0)
		{return false;}
		checker |= (1 << val);
	}
	return true;
}


实现一个算法,确定一个字符串的所有字符是否全都不同

首先 询问字符串是ASCII 还是Unicode,二者不同只在于unicode需要更大的存储空间。

以上两个办法中,第一个办法的时间复杂度为O(n), 空间复杂度为O(1)

第二个办法通过位运算把空间幅度减小为了原来的1/8(代码假定字符串只含有小写的a到z),时间复杂度不变。


还有其他解法:

将字符串中的每个字符与其他字符比较,时间复杂度O(n2),空间复杂度O(1)

对字符串进行时间复杂度为O(nlog(n))的排序,线性检查有没有相邻字符完全相同的情况

相关文章推荐

程序员面试金典1.1:确定字符串的所有字符是否全都不同

1.1 实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外的数据结构,又该如何处理? 解法: 一开始,不妨先问问面试官,上面的字符串是ASCII字符串还是Unicode字符串。...

面试题1之确定一个字符串的所有字符是否全都不同

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False...

【面试经典题之字符串】实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外的数据结构

实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外的数据结构。 解题: 首先我们假设这个字符串中全都是ASCII字符(如果不是需要另外讨论了)。因为ASCII字符集中总共有25...

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,Fal...

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False...

【小米笔试题】实现一个算法,确定一个字符串的所有字符是否全部不同

实现一个算法,确定一个字符串的所有字符是否全部不同。 下面给出3种可行方法,都经过测试。(其中方法一,刚开始理解有些困难,需要多思考一下) package XiaoMi; import java...

确定字符互异

题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,F...

读记-tomcat与java web开发技术详解

Web的概念      web的具有以下3个特征: 用超级文本技术HTML来表达信息,以及建立信息与信息的链接。用统一资源定位技术URL来实现网络上信息的精确定位。用网络应用层协议HTTP来规范浏览器...

Java static关键字

static 关键字 static可以修饰类(内部类),成员变量,方法 局部变量不能用static修饰 static修饰成员变量 static修饰的成员变量称为静态成员变量,没有使用...
  • LVAmber
  • LVAmber
  • 2017年04月14日 14:36
  • 145

确定一个字符串的所有字符全都不同算法实现

首先要确认字符串的编码方式,是ASCII还是Unicode,这很重要。我们就当是ASCII来处理吧,如果不是的话,只需要扩大存储空间就可以了,其余逻辑都是一样的。算法一: 算法的中心思想是利用散列表...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java,面试】实现一个算法,确定一个字符串的所有字符是否全都不同
举报原因:
原因补充:

(最多只允许输入30个字)