赛码网:最大字符串:
原题链接
补充概念
字典序:字典序(dictionary order),又称 字母序(alphabetical order),原意是表示英文单词在字典中的先后顺序,在计算机领域中扩展成两个任意字符串的大小关系。
在字典中,单词是按照首字母在字母表中的顺序进行排列的,比如 alpha 在 beta 之前。而第一个字母相同时,会去比较两个单词的第二个字母在字母表中的顺序,比如 account 在 advanced 之前,以此类推。
题目描述
Jack正在查询他昨天打的AtForces在线比赛的rank,他发现当两位选手排名相同的时候,id字典序小的会排在前面,他有个想法,往id里插入一个字母c,能使得他的id能够尽量往前排。
输入描述
第一行一个字符串id,表示他的用户名(1≤id长度≤1000),保证只由小写字母组成。
第二行一个字符c,表示被添加进去的字符,保证为一个小写字母。
输出描述
共一行,修改后的字典序最小的字符串。
示例
输 入:jackisnumberonek
返回值:jackiksnumberone
参考答案
#include <stdlib.h> #include <stdio.h> #include <string.h> void makeSmallest(char str[], int size, char key) { int index = size; for (int i = 0; i < size; i++) { if (key < str[i]) { index = i; break; } } for (int i = size; i > index; i -- ) str[i] = str[i - 1]; str[index] = key; return ; } int main() { int size = 0; char username[1002], key[2]; memset(key, '\0', sizeof(key)); memset(username, '\0', sizeof(username)); scanf("%s", username); scanf("%s", key); size = strlen(username); makeSmallest(username, size, key[0]); printf("%s", username); return 0; }
我的垃圾答案:
#include <iostream> #include <string> using namespace std; int main(){ string input; cin >> input; string ch; cin >> ch; int len = input.size(); int i; for(i=0;i<len;i++) { const char* str = ch.c_str(); if(input[i] > *str) { input.insert(i, ch); break; } } if(i == len) { input.insert(len, ch); } cout << input << endl; return 0; }
在线编程题 文章被收录于专栏
搜集编程题