HDU.2025 查找最大元素

题目

Problem Description
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。

Input
输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

Output
对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。

Sample Input

abcdefgfedcba
xxxxx

Sample Output

abcdefg(max)fedcba
x(max)x(max)x(max)x(max)x(max)

题解

#include <stdio.h>
#include <string.h>
#define FOR_TEST 0
#define STRING "(max)"
#define SIZE 110
char array[SIZE];
char FindMaxLetter(char* array);
void ArrayTrans(char* array, int startIndex, int length);
void StringInsert(char* array, int insertIndex, char* string);
int main(void){
    int i = 0;

    #if FOR_TEST
    sprintf(array, "%s", "Donald Trump you strange man");
    printf("%s\n", array);
    printf("%c\n", FindMaxLetter(array));
    for(i = 0; i < strlen(array); i++)
        if(array[i] == FindMaxLetter(array)){
            break;
        }
    ArrayTrans(array, i, strlen("SSY"));
    printf("%s\n", array);
    StringInsert(array, i, "SSY");
    printf("%s\n", array);
    #endif // FOR_TEST

    while(scanf("%s", array) != EOF){
        char maxLetter = FindMaxLetter(array);
        for(i = 0; i < strlen(array); i++){
            if(array[i] == maxLetter){
                ArrayTrans(array, i + 1, strlen(STRING));
                StringInsert(array, i + 1, STRING);
                i += strlen(STRING) - 1;
            }
        }
        printf("%s\n", array);
        memset(array, 0, sizeof array);
    }
    return 0;
}
char FindMaxLetter(char* array){
    int i = 0;
    char max = array[0];

    for(i = 0; array[i] != '\0'; i++)
        if(array[i] > max)
            max = array[i];
    return max;
}
void ArrayTrans(char* array, int startIndex, int length){
    int i = 0;

    for(i = strlen(array) + length; i >= startIndex; i--)
        array[i] = array[i - length];
}
void StringInsert(char* array, int insertIndex, char* string){
    int i = 0, j = 0;

    for(i = insertIndex, j = 0; i < insertIndex + strlen(string); i++, j++)
        array[i] = string[j];
}
updatedupdated2023-03-112023-03-11