找到指定的新类型字符
題目:
新類型的字符定義如下:
1、新類型字符是長(zhǎng)度為1或2的字符串
2、表現(xiàn)形式可以僅是小寫字母,也可以是大寫字母+小寫字母,也可以是大寫字母+大寫字母。例如,a,Bc,DD都是符合條件的新類型字符。
現(xiàn)在給定一個(gè)字符串str,str一定是若干新類型字符正確組合的結(jié)果。比如“eaCCBi”,由新類型字符“e”,“a”,“CC”,“Bi”拼成。再給定一個(gè)整數(shù)k,代表str中的位置。請(qǐng)返回被k位置指中的新類型字符。
舉例:
str = “aaABCDEcBCg”.
k = 7時(shí),返回“Ec”
k = 4時(shí),返回“CD”
k = 10時(shí),返回“g”
基本思路:
一種笨方法是從左向右遍歷,依次劃出新類型字符,到k位置時(shí)就知道指定的新類型字符是什么。這里不在詳述。
更快的方法。從k-1位置開始,向左統(tǒng)計(jì)大寫字母的個(gè)數(shù)記為uNum,遇到小寫字母就停止。
? ? ? ? ?1、如果uNum為奇數(shù),str[k-1…k]就是被指中的新類型字符
? ? ? ? ?2、如果uNum為偶數(shù)且str[k]為大寫,則str[k…k+1]就是被指中的新類型字符
? ? ? ? ?3、如果str[k]為小寫,str[k]就是被指中的新類型字符
def pointNewchar(s,k):if s == None or len(s) == 0 or k < 0 or k > len(s):return ""num = 0for i in range(k-1,-1,-1):if s[k].islower():breaknum +=1if num & 1 == 1: //為奇數(shù)return s[k-1:k+1]elif s[k].isupper(): //偶數(shù) 大寫return s[k:k+2]else: //偶數(shù) 小寫return s[k]
?
總結(jié)
以上是生活随笔為你收集整理的找到指定的新类型字符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 翻转字符串
- 下一篇: 数组的partition调整