【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字符串。...
  • jsqfengbao
  • jsqfengbao
  • 2015年08月25日 21:14
  • 1430

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

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

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

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

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

实现一个算法,确定一个字符串的所有字符是否全都不同 首先 询问字符串是ASCII 还是Unicode,二者不同只在于unicode需要更大的存储空间。 以上两个办法中,第一个办法的时间复杂度为O(n)...
  • michellechouu
  • michellechouu
  • 2015年07月06日 23:02
  • 1442

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

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

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

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

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

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

确定一个字符串的所有字符是否全都不同

题目:给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。 ...
  • andahuzhuang
  • andahuzhuang
  • 2016年07月19日 20:57
  • 511

判断字符串中每个字符是否唯一出现

实现一个算法确定字符串中的字符是否均唯一出现 样例 给出"abc",返回 true 给出"aab",返回 false import java.util.HashMap; import ja...
  • wwe4023
  • wwe4023
  • 2017年07月27日 21:25
  • 401

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

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代...
  • z_opt
  • z_opt
  • 2017年05月29日 09:26
  • 103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java,面试】实现一个算法,确定一个字符串的所有字符是否全都不同
举报原因:
原因补充:

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