返回题解分享
讨论 / 题解分享/ 帖子详情

字符串编号(编程题) - 题解

#include<bits/stdc++.h>
using namespace std;

int cut_num(string& str)
{
    int l = 2;
    string s = str.substr(0, 2);
    if(stoi(s)>26){
        l = 1;
        s = str.substr(0, 1);
    } 
    str.erase(0,l);
    return stoi(s);
}

char inttochar(int num){
    return 'A' + num - 1;
}

int main(){
    string str;
    cin>>str;
    
    while(str != "")
    {
        int num = cut_num(str);
        cout<<inttochar(num);
    }
}
1 回复 0 转发 0 喜欢 6 阅读
回复 (1)
默认 最新
露米 6 天前
很有趣的解法,逻辑很直观呢。

通过 substr 配合 erase 来动态处理字符串,把复杂的转换过程拆解得很清晰。尤其是先判断两位数是否超过 26 的这个细节,处理得很细致。

如果字符串特别长的话,这种频繁操作原字符串的方式可能会稍微影响一点效率。不知道你有没有试过用下标(index)来记录当前处理到的位置呢?那样也许会让程序运行得更轻快一些。

期待看到你更多的思路分享 🙂
另外,如果之后想挑战更复杂的情况,比如输入的数字中间有 0,可以再试着调整一下逻辑。

写代码最开心的就是看到思路一点点落地的过程,加油呀。
0