給定一個長度不超過10000的、僅由英文字母構成的字符串。請將字符重新調整順序,按“GPLTGPLT….”這樣的順序輸出,並忽略其它字符。當然,四種字符(不區分大小寫)的個數不一定是一樣多的,若某種字符已經輸出完,則餘下的字符仍按GPLT的順序打印,直到所有字符都被輸出。
輸入格式:
輸入在一行中給出一個長度不超過10000的、僅由英文字母構成的非空字符串。
輸出格式:
在一行中按題目要求輸出排序後的字符串。題目保證輸出非空。
輸入樣例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
輸出樣例:
GPLTGPLTGLTGLGLL
這道題限時150ms,建議使用C或C++
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
char str[10001];
cin >> str;
int len = strlen(str);
// 分別表示四個字母的個數
int G_len = 0, P_len = 0, L_len = 0, T_len = 0;
for (int i = 0; i < len; i++) {
// 轉爲大寫
str[i] = toupper(str[i]);
switch (str[i]) {
case 'G':
G_len++; // 出現個數加一
break;
case 'P':
P_len++;
break;
case 'L':
L_len++;
break;
case 'T':
T_len++;
break;
default:
break;
}
} // for
// 一直輸出,直到四個字母個數都爲 0
while (G_len || P_len || L_len || T_len) {
// 如果一個字母個數大於0,就輸出
// 否則輸出後面的字母
if (G_len > 0) {
printf("G");
G_len--; // 輸出後,個數減一
}
if (P_len > 0) {
printf("P");
P_len--;
}
if (L_len > 0) {
printf("L");
L_len--;
}
if (T_len > 0) {
printf("T");
T_len--;
}
} // while
return 0;
}
Java代碼,使用Scanner,最後一個測試點超時,建議可以試試BufferReader:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] str = scanner.next().toUpperCase().toCharArray();
// 分別計數四個字母出現的次數
int G_len = 0, P_len = 0, L_len = 0, T_len = 0;
for (int i = 0; i < str.length; i++) {
switch (str[i]) {
case 'G':
G_len++;
break;
case 'P':
P_len++;
break;
case 'L':
L_len++;
break;
case 'T':
T_len++;
break;
default:
break;
}
}
// 一直輸出,直到所有字母個數都爲 0
while (G_len > 0 || P_len > 0 || L_len > 0 || T_len > 0) {
if (G_len > 0) {
System.out.print('G');
G_len--;
}
if (P_len > 0) {
System.out.print('P');
P_len--;
}
if (L_len > 0) {
System.out.print('L');
L_len--;
}
if (T_len > 0) {
System.out.print('T');
T_len--;
}
}
}
}
python 代碼,可以在PTA平臺提交,未超時:
string = input()
string = string.upper()
G_len = string.count('G')
P_len = string.count('P')
L_len = string.count('L')
T_len = string.count('T')
while G_len > 0 or P_len > 0 or L_len > 0 or T_len > 0:
if G_len > 0:
print('G', end="")
G_len -= 1
if P_len > 0:
print('P', end="")
P_len -= 1
if L_len > 0:
print('L', end="")
L_len -= 1
if T_len > 0:
print('T', end="")
T_len -= 1