top1编程
← 返回题目
题解

【基础】删除字符串中间的*

1 条题解

  • 0
    @ 2026-7-30 1:11:34

    解题思路

    从左到右检查输入,遇到题目要求删除的内容就跳过,其他内容正常输出。

    参考代码

    // 读取题目给出的数据。
    // 先逐个检查输入内容,只保留题目要求的字符或数字。
    // 这道题的做法:先读入题目给出的数据,再用简单的循环和判断完成要求。
    #include<bits/stdc++.h>
    using namespace std;  
    int main(){           
    	string s;
    	int k1=0,k2=0;
    	cin>>s;
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='*'){
    			k1++;
    		}else{
    			break;
    		}
    	}
    	for(int i=s.size()-1;i>=0;i--){
    		if(s[i]=='*'){
    			k2++;
    		}else{
    			break;
    		}
    	}
    	for(int i=0;i<k1;i++){
    		cout<<"*";
    	}
    	for(int i=0;i<s.size();i++){
    		if(s[i]!='*'){
    			cout<<s[i];
    		}
    	}
    	for(int i=0;i<k2;i++){
    		cout<<"*";
    	}
    	return 0;
    }
    

    复杂度

    只遍历输入一次,时间复杂度为 O(n),额外空间复杂度为 O(1)。

    • 1