腾讯2017年暑期实习生编程题【算法基础-字符移位】(C++,Python)
算法基础-字符移位
时间限制: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])