首页 > 代码库 > Sicily 1133. SPAM
Sicily 1133. SPAM
题目地址:1133. SPAM
思路:
题目意思是说在‘@’的前后出现题目给定的合法字符或者不连续出现‘.’字符的话,这个就是合理的输出。
那么以@为中心,向前,向后扫描,当扫描到不符合字符时,记录此时位置,以前后为区间,输出字符。
具体代码如下:
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 bool is_ok(char ch) { 6 if ((ch >= ‘A‘&&ch <= ‘Z‘) || (ch >= ‘a‘&&ch <= ‘z‘) || 7 (ch >= ‘0‘&&ch <= ‘9‘) || ch == ‘-‘||ch == ‘_‘) { 8 return true; 9 }10 return false;11 }12 13 int main() {14 string test;15 while (getline(cin, test)) {16 if (test.size() == 0) continue;17 for (int i = 1; i < test.size()-1; i++) {18 if (test[i] == ‘@‘&&is_ok(test[i-1])&&is_ok(test[i+1])) {19 int begin, end;20 for (begin = i-1; begin >= 0; begin--) {21 if ((test[begin] == ‘.‘&&test[begin+1] == ‘.‘)) {22 break;23 }24 if (test[begin] != ‘.‘&&!is_ok(test[begin])) {25 break;26 }27 }28 if (test[begin+1] == ‘.‘) begin++;29 for (end = i+1; end < test.size(); end++) {30 if ((test[end] == ‘.‘&&test[end-1] == ‘.‘)) {31 break;32 }33 if (test[end] != ‘.‘&&!is_ok(test[end])) {34 break;35 }36 }37 if (test[end-1] == ‘.‘) end--;38 for (int j = begin+1; j <= end-1; j++) {39 cout << test[j];40 }41 cout << endl;42 }43 }44 }45 46 return 0;47 }
Sicily 1133. SPAM
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。