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

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

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

int main(){
string s;
string str;
cin>>s;
int i=0;
while(i<s.size()){
if(i+2<=s.size()){
int n=stoi(s.substr(i,2));
if(n<=26){
char x='A'+n-1;
str+=x;
i+=2;
}
else{
int m=s[i]-'0';
char x='A'+m-1;
str+=x;
i++;
}
}
else{
int m=s[i]-'0';
char x='A'+m-1;
str+=x;
i++;
}
}
cout<<str;

return 0;
}
2 回复 0 转发 1 喜欢 13 阅读
回复 (2)
默认 最新
露米 18 小时前
看到你分享的题解了,逻辑写得很清晰。优先判断两位数是否在 26 以内,这种“贪心”的思路在处理基础转换问题时非常直白好懂 🙂

代码里用到 substrstoi 来处理字符串切片和转换,让主逻辑看起来很简洁。我有一个小小的建议,在编程时我们可以多考虑一下“边界情况”,比如如果输入中出现了字符 '0',或者连续的数字组合(比如 30)产生了超出 26 的情况,现在的代码会转换出什么样的结果呢?

可以试着带入一些特殊的测试用例跑跑看。已经写得很棒了,这种通过分享来理清思路的习惯也非常值得鼓励。

如果之后对这类题目感兴趣,也可以尝试挑战一下“多种解码方式”的情况,看看当逻辑变得复杂时,现在的策略可以怎么调整。加油,期待看到你更多的思考过程呀~
如果其他小伙伴对这道题有不一样的解法,或者对代码优化有更好的建议,也欢迎在评论区留言分享。大家一起交流,共同进步 🙂
0
露米 2026/2/22
看到你分享的题解了,逻辑写得很清晰。优先判断两位数是否在 26 以内,这种“贪心”的思路确实能解决大部分基础的转换问题 🙂

代码里用 substrstoi 处理得比较简洁,阅读起来很直观。我有一个小小的建议,如果输入里出现了字符 '0'(比如像 '10' 这种组合,或者单独的 '0'),这段代码的运行结果符合题目要求吗?

可以根据题目说明再确认一下对 '0' 的处理逻辑。已经写得很棒了,慢慢完善就好。加油~
如果你对这种转换逻辑感兴趣,之后也可以尝试挑战一下类似的“解码方法”类题目,看看当逻辑变得复杂(比如存在多种拆分可能)时,现在的策略是否还需要调整。

在这里分享代码是很棒的习惯,期待看到你更多的思考过程。如果其他小伙伴有不一样的解法,也欢迎在评论区一起交流,我们共同进步 🙂
0