算法基础-字符移位
时间限制: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])