[编程题] 算法基础-字符移位

小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?

 

 

输入描述:

输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.



输出描述:

对于每组数据,输出移位后的字符串。

 

输入例子:
AkleBiCeilD

 

输出例子:  
kleieilABCD

代码如下:

def movestr(list_s):
    i = 0
    count = 0
    while count < len(list_s):
        if list_s[i].isupper():
            list_s += list_s[i]
            list_s = list_s[:i] + list_s[i+1:]
            i -= 1
        i += 1
        count += 1
    return list_s

if __name__ == '__main__':
    while True:
        try:
            print movestr(raw_input().strip())
        except:
            break

因为题目要求不能申请空间,因此我的思路是顺序找到一个大写字母,换到最后,然后删除这个字母。

最后吐槽一下这个测试黑盒,有一个样例是前后带了一个空格符的,而题目中又没有说明,在线提交的时候就说未通过……

最后看了大家的答案才知道要去除输入的首尾空格符,因此在输入位置添加strip()。

祭奠我那为此逝去的30分钟青春

 

posted @ 2017-04-09 21:28  kuqs(奇小东)  阅读(161)  评论(0)    收藏  举报