您的位置:首页 > 编程语言 > Python开发

字符串问题---找到被指的新类型字符

2017-08-23 21:42 155 查看
【题目】

 新类型的字符定义如下:

新类型字符是长度为1或2的字符串

表现形式可以仅是小写字母,也可以是大写字母+小写字母,也可以是大写字母+大写字母。例如,a,Bc,DD都是符合条件的新类型字符。

现在给定一个字符串str,str一定是若干新类型字符正确组合的结果。比如“eaCCBi”,由新类型字符“e”,“a”,“CC”,“Bi”拼成。再给定一个整数k,代表str中的位置。请返回被k位置指中的新类型字符。

【举例】

 str = “aaABCDEcBCg”.

k = 7时,返回“Ec”

k = 4时,返回“CD”

k = 10时,返回“g”

【基本思路】

  一种笨方法是从左向右遍历,依次划出新类型字符,到k位置时就知道指定的新类型字符是什么。这里不在详述。

  更快的方法。从k-1位置开始,向左统计大写字母的个数记为uNum,遇到小写字母就停止。如果uNum为奇数,str[k-1…k]就是被指中的新类型字符。如果uNum为偶数且str[k]为大写,则str[k…k+1]就是被指中的新类型字符;如果str[k]为小写,str[k]就是被指中的新类型字符。

下面是使用python3.5实现的代码。

#找到被指的新类型字符
def pointNewChar(str1, k):
if str1 == None or len(str1) == 0 or k < 0 or k >= len(str1):
return ""
uNum = 0
for i in range(k-1, -1, -1):
if str1[i].islower():
break
uNum += 1

if uNum & 1 == 1:
return str1[k-1 : k+1]
elif str1[k].isupper():
return str1[k : k+2]
else:
return str1[k]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符串 python
相关文章推荐