私信TA

用户名:uq_26667239983

访问量:3972

签 名:

知识大海里的浪者

等  级
排  名 596
经  验 4197
参赛次数 0
文章发表 155
年  龄 18
在职情况 学生
学  校 湖南理工学院
专  业 软件工程

  自我简介:

解题思路:
统计字符串中是否存在三种不同字符,但是奇怪的是,我一开始按照前面字符统计的题目去做,案列虽然过了,但是后面的答案错误,我一看题目要求,它要求的特殊字符只要它列出来的那几种,其他的都不行,这也导致了出现了不符合的特殊字符时也进行了统计,这就是一个细节上的坑点,如果你的案例只过了50%,那应该就是这里的问题。
注意事项:
注意一下特殊字符的要求,应该也可以用字符统计过吧? 我没写了,希望有写了的大佬在下方留个言,相互借鉴学习,万分感谢!!!
参考代码:

#include<iostream>

#include<string>

using namespace std;


int main()

{

int T;

cin >> T;

for(int j=0;j<T;j++)

{

string srr;

cin >> srr;

int len = srr.length();//统计字符长度

if (len < 8 || len>16)//题目要求之一

{

cout << "NO" << endl;

}

else

{

int shuzi = 0;//数字

int da = 0;//大写字母

int xiao = 0;//小写字母

int teshu = 0;//特殊字符

for (int i = 0; i < len; i++)//下面的统计只统计有还是没有,没有统计有多少个!!!

{

if (srr[i] >= '0' && srr[i] <= '9')

{

if (shuzi == 0)

shuzi++;

else

continue;

}

if (srr[i] >= 'a' && srr[i] <= 'z')

{

if (xiao == 0)

xiao++;

else

continue;

}

if (srr[i] >= 'A' && srr[i] <= 'Z')

{

if (da == 0)

da++;

else

continue;

}

if (srr[i] == 33 || (srr[i] >= 35 && srr[i] <= 37) || srr[i] == 64 || srr[i] == 94 || srr[i] == 126) //题目要求的特殊字符的ASCII码

{

if (teshu == 0)

teshu++;

else

continue;

}

}

int flag = 0;

flag = shuzi + da + xiao + teshu;

if (flag >= 3)//题目要求二,要大于或等于三种

cout << "YES" << endl;

else

cout << "NO" << endl;

}

}

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »