mygzhh

 算法基础-字符移位

时间限制:1秒

空间限制:32768K

题目:

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

输入描述:

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

输出描述:

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

输入示例:

AkleBiCeilD

输出示例:

kleieilABCD

思路:

遍历输入字符串中每一个元素,大写放进一个字符串2,小写放另外一个字符串3,最后将这字符串2追加到字符串3,输出最后的字符串3

C++代码:

 1 #include<iostream>
 2 #include <string.h>
 3 using namespace std;
 4 int main(){
 5     int num,j,k;
 6     char str1[1000],str2[1000],str3[1000];
 7     cin>>str1;
 8     num = strlen(str1);
 9     j=0;
10     k=0;
11     for(int i=0;i<num;i++){
12         if((str1[i]>='A')&&(str1[i]<='Z')){
13             str2[j]=str1[i];
14             j++;          
15         }
16         else{
17             str3[k]=str1[i];
18             k++; 
19         }
20     }
21     cout<<str3<<str2<<endl;23     return 0;    
24 }

Python 代码:

Python输出稍微有点不同,遍历输出字符串储存的列表时到最后一位是一个列表,所以加条件判断是否遍历到了列表的最后一个元素,输出即可

#coding=utf-8
#__author:Administrator
#__time:2018/5/22 17:34
#__file_name:算法基础-字符移位
import sys
str1 = raw_input()
str2 = []
str3 = []
num = len(str1)
num2 = 0
for i in range(num):
    if str1[i] >= 'A' and str1[i] <= 'Z':
        str2.append(str1[i])
        num2 += 1
    else :str3.append(str1[i])

str3.append(str2)
num = len(str3)
for i in range(num):
    if i == num-1:
        for j in range(num2):
            sys.stdout.write(str2[j])
    else :
        sys.stdout.write(str3[i])

 

相关文章: