题解 | #表示数字#

表示数字

http://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6

题意:

输入一个字符串,在字符串中所有连续的数字子串左右各加一个*,输出处理后的字符串。

解法(while循环)

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    string s;
    while(cin>>s){
        string ans;//答案字符串
        int idx=0;//当前下标
        while(idx<s.size()){
            if(s[idx]>='0'&&s[idx]<='9'){
                //如果是数字串
                ans.push_back('*');
                //在前面加一个*
                while(idx<s.size()&&s[idx]>='0'&&s[idx]<='9'){
                    //扫描连续的数字串,作为一个整体
                    ans.push_back(s[idx]);
                    idx++;
                }
                ans.push_back('*');
                //在后面加一个*
            }else{
                ans.push_back(s[idx]);//否则直接追加到答案字符串里
                idx++;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
时间复杂度:,其中为字符串长度,显然,对于字符串每一位,我们只需要的时间来处理,故时间复杂度为
空间复杂度:,我们存储答案字符串需要的空间,故空间复杂度为

全部评论

相关推荐

02-08 15:53
门头沟学院 Java
CoderEcho:让公司知道便宜没好货
点赞 评论 收藏
分享
02-16 10:35
已编辑
西安科技大学 golang
虚闻松声:整体应该挺好了 项目2-3个就够了。都类似第一段这么写。 构建数据闭环 推动工程创新 优化架构设计 免费修改简历,就业咨询,欢迎私信交流。
点赞 评论 收藏
分享
02-23 19:27
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务