腾讯2017年暑期实习生编程题【算法基础-字符移位】(C++,Python)

 算法基础-字符移位

时间限制:1秒

空间限制:32768K

题目:

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

输入描述:

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

输出描述:

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

输入示例:

AkleBiCeilD

输出示例:

kleieilABCD

思路:

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

C++代码:

 #include<iostream>
 #include <string.h>
 using namespace std;
 int main(){
     int num,j,k;
     ],str2[],str3[];
     cin>>str1;
     num = strlen(str1);
     j=;
     k=;
     ;i<num;i++){
         if((str1[i]>='A')&&(str1[i]<='Z')){
             str2[j]=str1[i];
             j++;
         }
         else{
             str3[k]=str1[i];
             k++;
         }
     }
     cout<<str3<<str2<<endl;

; }

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])
上一篇:运营商级NAT(Carrier-grade NAT)


下一篇:Scala可变参数列表,命名参数和参数缺省