当前位置: 代码迷 >> 综合 >> C/C++编程题刷题:电话号码
  详细解决方案

C/C++编程题刷题:电话号码

热度:98   发布时间:2024-02-12 04:34:06.0

电话号码

【题目描述】企鹅王国是一个奇特的国家,他们的电话号码包含11位数字,并且第一个数字一定是8。比如88888888888就是企鹅王国的电话号码,但是13888888888和000就不是。
现在给出一个长度为n的字符串s,这个字符串只包含数字。
每一次操作,你可以从这个字符串中删除任意一个字符。

对于给定的字符串,需要你判断是否能通过0次或若干次操作,把这个字符串变成企鹅王国的电话号码。

输入描述

第一行一个整数t,表示测试用例的组数;
接下来2?t行,每个测试用例包含2行;
第一行一个整数n,表示字符串的长度;
第二行一个字符串s。
输入满足1<=t<=100,1<=n<=100,每个字符串只包含数字。

输出描述

能则输出"YES",否则输出"NO"。

示例1

输入

1

2

3

4

5

2

11

88888888888

3

000

输出

1

2

YES

NO

#include <iostream>
#include <string>
using namespace std;int main() {int t;int n;string s;cin >> t;while (t--) {cin >> n;cin >> s;//只要第一个字符串为8 并且长度大于等于11 //就可以通过一系列操作变成符合条件的电话号码 if (s[0] == '8') {if (n >= 11) {cout << "YES" << endl;}else {cout << "NO" << endl;}}else {int pos=-1;for (int i = 0; i < n; i++) {//找到第一个为8的位置if (s[i] == '8') {pos = i;break;}}//如果找不到这个8 或者找到了而剩下的字符串太短if (pos == -1 || n - pos < 11) {cout << "NO" << endl;}else {cout << "YES" << endl;}}	}system("pause");return 0;
}