1 条题解

  • 0
    @ 2025-3-23 18:33:32

    注意他给的示例输出是错的! 被替换为******的后面也是要加下划线的

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    string stringEncryption(int index, string input)
    {
    	string output = "";
    	vector<string> temp;
    	for (int left = 0, right = 0; left < input.length(), right < input.length(); left++)
    	{
    		//相当于做一个split,把string用下划线分开
    		if (input[left] == '_')
    		{
    			if (!(left - right == 0))
    			{
    				string in = input.substr(right, left - right);
    				temp.push_back(in);
    			}
    			right = left + 1;
    		}
    		if (input[left] == '\"')
    		{
    			//如果双引号内的内容为空,就把双引号连同他前面的命令一起加进去
    			if (input[left + 1] == '"')
    			{
    				left += 2;
    				string in = input.substr(right, left - right);
    				temp.push_back(in);
    				right = left + 1;
    			}
    			else
    			{
    				right = left + 1;
    				left++;
    				//找到下一个双引号
    				while (input[left] != '\"'&&left < input.length())
    					left++;
    				//把双引号内的内容写入
    				string in = input.substr(right, left - right);
    				temp.push_back(in);
    				right = left + 1;
    			}
    		}
    	}
    	if (index >= temp.size())
    		return "ERROR";
    	for (int i = 0; i < temp.size(); i++)
    	{
    
    		if (i != index)
    			output.append(temp[i]);
    		else
    			output.append("******");
    		if (i != temp.size() - 1)
    			output.append("_");
    	}
    	return output;
    }
    int main(int argc, char *argv[])
    {
    	int index = 0;
    	cin >> index;
    	string input;
    	cin >> input;
    
    	cout << stringEncryption(index, input);
    }
    
    
    
    • 1

    信息

    ID
    108
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    253
    已通过
    46
    上传者