PAT A1035 Password

前言

传送门

正文

PAT A1035 Password_第1张图片
思路

详见代码注释,有关find()和replace()函数,也贴在代码下面,这两个函数以及和substr()在解字符串类型的题时,作用非常大。比如通过find()和substr()函数,我们就可以自己实现split()函数用于分割字符串,详见——>PAT B1009 说反话

参考题解

#include
#include
using namespace std;
/*
用一个二维字符串数组str存储输入的值,一个bool数组flag来表示对应的密码是否
被修改过 ,遍历密码字符串,将其中的'1'替换为'@','0'替换为'%',l替换为'L'
而'O'替换为o。若该字符串中有上述字符,则对应的flag设为true;这里需要
注意用变量定义数组长度的时候不能同时对数组进行初始化,需要在定义之后再初始化 
*/
int main(){
	int n,count=0;//count表示需要修改的数量 
	cin>>n;
	//注意用变量定义数组长度的时候不能同时对数组进行初始化,需要在定义之后再初始化 
	bool flag[n];
	for(int i=0;i>str[i][j];
		}
		while(str[i][1].find("1")!=string::npos){//循环查找是否有"1" 
			str[i][1]=str[i][1].replace(str[i][1].find("1"),1,"@");
			flag[i]=true;
		} 
		while(str[i][1].find("0")!=string::npos){
			str[i][1]=str[i][1].replace(str[i][1].find("0"),1,"%");
			flag[i]=true;
		}
		while(str[i][1].find("l")!=string::npos){
			str[i][1]=str[i][1].replace(str[i][1].find("l"),1,"L");
			flag[i]=true;
		}
		while(str[i][1].find("O")!=string::npos){
			str[i][1]=str[i][1].replace(str[i][1].find("O"),1,"o");
			flag[i]=true;
		}
	}
	for(int i=0;i
string& replace (size_t pos, size_t len, const string& str) 
用str 替换指定字符串从起始位置pos开始长度为len 的字符
EG:

#include
using namespace std;
int main(){
	string line="hello world, i love C++!";
	string s = line.replace(line.find("i"), 1, "haha");
	cout<

PAT A1035 Password_第2张图片

PAT A1035 Password_第3张图片

你可能感兴趣的:(PAT甲级)