`
BrokenDreams
  • 浏览: 249791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
68ec41aa-0ce6-3f83-961b-5aa541d59e48
Java并发包源码解析
浏览量:98328
社区版块
存档分类
最新评论

一个小编程题-确定字符互异

阅读更多
原题:
        请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
测试样例:
"aeiou"
返回:True
"BarackObama"
返回:False

思路:
        首先想到如果可以有一个辅助的hash表,把遍历过的字符存储起来,这样会很容易判断。但题目要求不能使用额外存储结构,再一个,字符为ASCII字符,一共128个。
        想到完全可以使用128个bit位,来表示128个字符是否出现过。2个long就可以存储了,代码如下:
public static boolean checkDifferent(String iniString){
		long asc1 = 0;
		long asc2 = 0;
		int len = iniString.length();
		for(int i=0;i<len;i++){
			char c = iniString.charAt(i);
			if(c < 64){
				long mask = 1L << c;
				long r = asc1 & mask;
				if(r == mask){
					return false;
				}else{
					asc1 |= mask;
				}
			}else{
				c &= 63;
				long mask = 1L << c;
				long r = asc2 & mask;
				if(r == mask){
					return false;
				}else{
					asc2 |= mask;
				}
			}
		}
		return true;
	}
分享到:
评论

相关推荐

    leetcode中国-algorithm:数据结构和算法(精选)

    给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 思路:使用一个计数的数组来做 1.4 空格替换 请编写一个方法,将字符串...

    4.答《对一道物理竞赛题的两种互异解答的探讨》.doc

    4.答《对一道物理竞赛题的两种互异解答的探讨》

    论文研究-企业财务综合分析方法——互异代表系与人工神经网络.pdf

    论文研究-企业财务综合分析方法——互异代表系与人工神经网络.pdf,

    leetcode中国-suanfa:suanfa

    给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 思路:使用一个计数的数组来做 1.4 空格替换 请编写一个方法,将字符串...

    newtdd.zip_NewtonQuotient_newtdd_差商 互异节点

    计算牛顿差商 函数f(x)在两个互异点xi,xj处的一阶差商定义为: f[xi,xj]=[f(xi)-f(xj)]/(xi-xj)=(yi-yj)/(xi-xj)

    迁移率互异的漂流扩散模型的拟中性极限和混合层问题

    迁移率互异的漂流扩散模型的拟中性极限和混合层问题,刘春迪,王术,本文主要研究了迁移率互异的漂流扩散模型在一维有界区域一般初边值条件下的拟中性极限和混合层问题. 首先, 利用密度函数变换把原�

    清华大学-912-2017年真题21

    1.判断题 2.选择题 1.五个互异结点构造二叉搜索树有多少种 2.直接插入排序(64,63,62...1)比较次数最接近 6.逆波兰表达式 3.利用广度优先搜

    算法与分析实验四:回溯法

    实验四:回溯法 【实验目的】 深入理解分治法的算法思想,应用分治法解决...试用回溯法设计一个算法,找出所有可能满足上述条件的着色法,如果这个图不能用3种颜色着色满足相邻顶点颜色互异的要求就给出否定的回答。

    世界上最大的互异完全n次数

    NULL 博文链接:https://morgan-java.iteye.com/blog/583586

    论文研究-基于分支界限搜索的EFSM协议测试序列生成算法.pdf

    针对EFSM中状态迁移不确定导致的协议一致性测试序列生成困难的问题, 提出了一种协议一致性测试序列生成算法。该算法基于互异代表系理论为每个协议状态变迁赋权值, 再基于分支界限法搜索生成的协议测试序列, 将协议...

    利用双向循环链表解决面试问题

    为公平起见,组织者决定利用会议室外的圆桌,按以下方法“随机”确定面试顺序:第一个到达的应聘者在圆桌周围任意选择一个位置坐下;此后到达的每位应聘者都从前一应聘者出发,沿逆时针方向围圆桌走过m人(前一应聘...

    基于C语言开发的捕捉流星小游戏【100010902】

    数学题随机产生,且答案互异,流星链表中的随机非答案也与已有数据互异; 答对加一分,删除流星和当天题目,答错减一分,题目不变。题目答完后需要刷新或退出; 点击刷新,刷新五道题目,更新流星; 点击退出,...

    matlab数组矩阵Matlab中的所有变量都是多维数组

    矩阵只是一个二维数组。 创建数组 使用方括号 在Matlab中,可以通过使用方括号 [] 来创建一个数组,如: 元素间的分隔符可使用空格、逗号和分号,其中空格和逗号的含义是一样的: 空格/逗号:隔开列元素 分号:...

    01-D-4 取非极端元素 & 冒泡排序1

    算法: 从 S 中任意取出三个元素// 如果 S 数组的形式给出 不妨取出前三个// 由于 S 是集合,所以这个三个元素必然互异确定并且排除其中的最最值输出 z

    leetcode正方形坐标-firstblog:第一个博客

    leetcode正方形坐标 双指针--LeetCode第十一题 ...比较两端柱子的高低并选择低柱子,那么低柱子与其他任何的柱子之间形成的容器体积最大的就是由该柱子与最末尾的那个柱子构成的,这样既得到了该柱子与其他任意一个

    一个三次Diophantine方程的初等解法

    针对三次Diophantine方程x的立方加减1等于2倍p1,p2,…,直至pi(i≥2)(其中pi(i≥2)与1对...q(其中p与q对模6同余,且p,q为互异的奇素数)与y的平方之积无正整数解的两个充分条件,从而推进了该类三次Diophantine方程的研究.

    红黑树算法C语言实现

    实验1:实现红黑树的基本算法, 对n的取值分别为 12、24、36、48、60,随机生成n 个互异的正整数(K1, K2, K3, ……, Kn)作为节点的关键字,向一棵初始空的红黑树中依次插入这n 个节点,统计算法运行所需时间 ,画...

    插值法与最小二乘法曲线拟合 v1.1 注册版.rar

    或只已知又实验或测量得到的某一函数y=f(x)在区间[a,b]中互异的n+1个x0,x1,……,xn处的值y0,y1,……,yn,需要构造一个简单函数P(x)作为函数y=f(x)的近似表达式y=f(x)≈P(x),使得P(xi)=f(xi)=yi,(i=0,1,……,n)....

    Lagrange-interpolation-formula.zip_-baijiahao_formula_两点插值_两点插值函

    线性插值也叫两点插值,已知函数y = f (x)在给定互异点x0, x1上的值为y0= f (x0),y1=f (x1)线性插值就是构造一个一次多项式

    具有互异节点的非线性耦合复杂网络的同步 (2013年)

    针对具有互异节点的非线性耦合复杂网络的同步问题,基于稳定性和矩阵理论,采用补偿控制,通过低维线性矩阵不等式(LMIs)给出了所提出的网络同步的充分条件.并且把结论推广到具有相似节点的非线性复杂网络的同步问题...

Global site tag (gtag.js) - Google Analytics