文章

6

粉丝

83

获赞

90

访问

5.1k

头像
最小字符串 题解:
P1965 华东师范大学2023年机试
发布于2025年2月13日 11:15
阅读数 719

这道题描述的不是很好,我看了几遍也没理解意思。看到上一位朋友写的题解后才明白这题问的是什么。

首先A B C D......这些字母按从小到大理解,A最小,Z最大。

小的在前即可扩展,例如AC 可以扩展为AAC,而CA中C比A大,不能扩展。

求给定字符串所能扩展的极限。

 

 

 

以下是我的解法:

把字符串按相同字母分开,存入数组,例如AC分为A,C存入数组。

遍历数组,若下一个数组元素字母大,则当前字母可拓展。即A下一个为C,A小于C,则A可拓展。

故最终代码如下。

#include <iostream>
#include "algorithm"
#include "string"
#include<vector>
#include <unordered_map>
using namespace std;

int main(){
    string s;
    cin>>s;
    string ans = "";
    vector<string> v;int j = 0;
    for(int i=0;i<s.size();i++){
        if(s[i]!=s[j]){
            v.push_back(s.substr(j,i-j));
            j = i;
        }
    }
    v.push_back(s.substr(j,s.size()-j));
    for(int i = 0;i<v.size()-1;i++){
        if(v[i][0]<v[i+1][0]){
            ans+=v[i];
            ans+=v[i];
        }
        else{
            ans+=v[i];
        }
    }
    ans+=v[v.size()-1];
    cout<<ans...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发