# -*- coding:utf-8 -*-
'''
请实现一个算法,确定一个字符串的所有字符是否全都不同。
这里我们要求不允许使用额外的存储结构。
给定一个string iniString,
请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。
保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。解法1:将字符串中的每个字符与其余字符进行比较,时间复杂度为O(n**2),空间复杂度为O(1)
解法2:由于题目中有提到,字符串中的字符都是ASCII码,则它转换成int数值后是0-255之间构建哈希表解决即可
解法3:对输入的字符串进行排序,再检查是否有相邻的两个元素相等的情况'''
class Different:def checkDifferent_1(self, iniString):# write code hereif len(iniString)<=1:return Trueelse:for i in range(len(iniString)):for j in range(i+1,len(iniString)):if iniString[i]==iniString[j]:return Falsereturn Truedef checkDifferent_2(self, iniString):if len(iniString)<=1:return Trueelse:hash_table=[0 for i in range(256)]for c in iniString:# python中将字符转换成ASCII码值的函数 ord(char)# python中将ASCII码值转换成字符的函数 chr(int)if hash_table[ord(c)]==1:return Falseelse:hash_table[ord(c)]=1return Truedef quick_sort(self,input_str):if len(input_str)<=1:return input_str# 返回对输入字符串进行快速排序的结果povit_value=input_str[0]start=0end=len(input_str)-1# start和end指针交替有效,保证每次进入while循环的时候,start无效,end有效while(1):while(end>start):if input_str[end]>=povit_value:end-=1else:breakif end==start:breakelse:# print('here',input_str[start],input_str[end],type(input_str[end]))input_str[start]=input_str[end]start+=1while(start<end):if input_str[start]<=povit_value:start+=1else:breakif start==end:breakelse:input_str[end]=input_str[start]return self.quick_sort(input_str[:end])+[povit_value]+self.quick_sort(input_str[(end+1):])def checkDifferent(self, iniString):# 字符之间可以直接比较大小,字符之间比较大小的方式就是它们的ASCII码谁大谁小# 使用快速排序算法对输入的字符串进行排序iniInt=list(map(lambda x:ord(x),iniString))sorted_str=self.quick_sort(iniInt)for i in range(1,len(sorted_str)):if sorted_str[i]==sorted_str[i-1]:return Falsereturn Trueif __name__=="__main__":print(Different().checkDifferent("aeiou"))print(Different().checkDifferent("BarackObama"
))

python 确定字符互异相关推荐

  1. 确定字符互异 牛客网 程序员面试金典 C++ Python

    确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...

  2. 程序员面试金典——1.1确定字符互异

    程序员面试金典--1.1确定字符互异 2018年4月7日从今天开始正式看<程序员面试金典> Solution1: 之前一直以为的这类题比较好的一种方法,但貌似还是不太符合题目要求的&quo ...

  3. CM1-确定字符互异-【字符串】

    一 题目描述 给定一个字符串string iniString,请返回一个bool值,True代表字符串的所有字符全都不同,False代表存在相同的字符.保证字符串中的字符为ASCII字符且不允许使用额 ...

  4. 程序员面试金典(C++)——确定字符互异

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

  5. n个互异字符串的全排列

    本节讨论通过递归调用实现互异字符串的全排列. 考虑两个字符的全排列为两者交换顺序:三个字符的全排列则可以用抽取一个交换到第一个位置,剩下的两个字符仿照两个字符的情况实现全排列:以此类推,当n个字符全排 ...

  6. java求数组中满足给定和的数对,【加试题】数组a中有50个互异的整数,已按升序排列。给定一个正整数key,寻找数组a中是否有一对数的和等于给定的数key,算法如下:...

    (1) 实现上述功能的VB程序如下,请在画线处填入合适代码. Dim a(1 To 50)As Integer Const n As Integer=50 Private sub form_load( ...

  7. python中文字符_python处理中文字符

    1.在py文件中使用中文字符 unicode.py文件内容如下所示: # -*- coding:utf-8 -*- str_ch = '我们women' uni_ch = u'我们women' pri ...

  8. python sub 不区分大小写_解决Python列表字符不区分大小写的问题

    有时候,我们需要检测一个元素是否已经存在列表中,并且不区分大小写,如:列表已有元素Mary,那我们想认为MARY也已经被占用.这个例子在实际编程中会用到很多,比如保证网站注册用户独一无二.邮件姓名独一 ...

  9. 就有趣,Python生成字符视频

    Python生成字符视频 一.前言 在之前也写过生成字符视频的文章,但是使用的是命令行窗口输出,效果不是很好,而且存在卡顿的情况.于是我打算直接生成一个mp4的字符视频.大致思路和之前一样:Pytho ...

  10. python找到字符中空格所在的位置_Python 查找字符在字符串中的位置示例效果

    Python 查找字符在字符串中的位置实例 下面为大家分享一篇Python 查找字符在字符串中的位置实例,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 str_1='wo shi yi zh ...

最新文章

  1. python装饰器实例-Python装饰器用法实例总结
  2. 在WINCE5.0中应用CMD(比如运行PING命令)
  3. 基础练习 字母图形 c语言
  4. 发布会不用开了?三星Galaxy Note 10 Plus完整规格泄露
  5. SQL2008安装出现问题invoke---beginInvoke
  6. 指针07:指针和函数
  7. 1087 1 10 100 1000
  8. 「ubuntu」在Ubuntu Server 16.04 LTS下安装VMware Tools(转)
  9. wxPython下载安装教程
  10. android ip 黑白名单,“IP 黑白名单”功能说明
  11. 使用函数提取姓别和出生日期:
  12. 电解电容和钽电容的区别是什么
  13. ES6常问面试题(Promise,async和await 等)
  14. Redis使用setnx实现分布式锁及其问题、优化
  15. 字体基础知识:衬线字体和无衬线字体
  16. 扇贝计算机英语单词,扇贝单词英语版(com.shanbay.sentence) - 3.9.402 - 应用 - 酷安
  17. 覆盖式理解Android 消息处理机制(带源码解析)
  18. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第二十一集
  19. 联想拯救者y7000充电一闪一闪,接触不良
  20. 失眠尽快入睡小妙招,这些助眠产品让你一招入睡

热门文章

  1. Bootstrap注册页面模板
  2. matlab latex 表格,latex表格绘制及对齐
  3. MAC将latex等大软件安装到移动硬盘
  4. 亚利桑那州立大学计算机科学排名,2019上海软科世界一流学科排名计算机科学与工程专业排名亚利桑那州立大学排名第76-100...
  5. OpenCV 之 角点检测
  6. 计算机桌面标题栏怎么锁定,(excel图表标题设置)在excel表格中,如何锁定标题栏不被修改?...
  7. 王道408排序算法总结
  8. 【原创】LabView制作实时读取Excel正态分布图
  9. yum -y --downloadonly --downloaddir=/root/ruiy update
  10. dede 表单必填_dede自定义表单“必填项”设置方法