PATB1014:福尔摩斯的约会
【思路】:
输入 四个字符串 ,分别求其第一个满足条件的字符。用Hash输出
【知识点】
求第一个满足条件的字符用 for break及时退出循环
一个字符串中分两次不同的的遍历 来判断的不同的条件 用 i 来连接
**for (i = 0; i < size1; i++)**
{
if (S1[i] == S2[i] && (S1[i] >= 'A' && S1[i] <='G'))
{
int inx = S1[i] - 'A';
cout << week[inx] << " ";
break;//找到了就要及时break;
}
}
**for (i = i+1; i < size1; i++){** // i = i+1;
if (S1[i] == S2[i] )
{
if (S1[i] >= '0' && S1[i] <='9')
{
printf("%02d:", S1[i] - '0');//强制输出的格式
break;
}
}
}
【参考代码】
void B1014(){
string week[10] = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" };
char S1[80], S2[80], S3[80], S4[80];
cin >> S1 >> S2 >> S3 >> S4;
int size1 = min(strlen(S1), strlen(S2));
int size2 = min(strlen(S3), strlen(S4));
int i;//在一个字符串中做前后两次不同的循环;
for (i = 0; i < size1; i++)
{
if (S1[i] == S2[i] && (S1[i] >= 'A' && S1[i] <='G'))
{
int inx = S1[i] - 'A';
cout << week[inx] << " ";
break;//找到了就要及时break;
}
}
for (i = i+1; i < size1; i++){
if (S1[i] == S2[i] )
{
if (S1[i] >= '0' && S1[i] <='9')
{
printf("%02d:", S1[i] - '0');//强制输出的格式
break;
}
else if (S1[i] >= 'A' && S1[i] <= 'N')
{
printf("%02d:", S1[i] - 'A' + 10);
break;//找到了就要及时break;
}
}
}
for (int j = 0; j < size2; j++)
{
if (S3[j] == S4[j] ){
if ((S3[j] >= 'A' && S3[j] <= 'Z') || (S3[j] >= 'a' && S3[j] <= 'z'))
{
printf("%02d\n", j);
break;
}
}
}
}