标签:华为入职练习 华为oj
#include <iostream> #include <string> #include <vector> using namespace std; //计算字符串中字符的种类 int calTypeKinds(string &str) { int count[4]; memset(count , 0 , sizeof(int)*4); for(size_t i = 0; i < str.length(); ++i) { if(str[i] >= 'A' && str[i] <= 'Z') { count[0]++; } else if(str[i] >= 'a' && str[i] <= 'z') { count[1] ++; } else if(str[i] >= '0' && str[i] <= '9') { count[2] ++; } else { count[3]++; } } int typeNum =0; for(int i = 0; i <4; ++i) { if(0 != count[i]) { typeNum ++; } } return typeNum; } bool isContainSameSubstr(string &str) { size_t len = str.length(); for(int i = 0; i < len -2; ++i) { for(int j = i + 1; j < len -2; ++j) { if(strncmp(&(str[i]), &(str[j]), 3) == 0) { return true; } } } return false; } int main() { string str; bool flag = false; int typeTotal = 0; while(cin>>str) { flag = false; typeTotal =0; //1. 判断长度是否超过8 //2. 计算字符串中的字符类型 typeTotal = calTypeKinds(str); //3. 判断字符串中是否有长度超过2的相同子串 bool sameFlag = isContainSameSubstr(str); if( str.length() > 8 && typeTotal >=3 && sameFlag == false) { cout<<"OK"<<endl; } else { cout<<"NG"<<endl; } } return 0; }
标签:华为入职练习 华为oj
原文地址:http://blog.csdn.net/xiaohanstu/article/details/45618765