首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

Sicily 1133 SPAM:郵箱地址提取

     編輯:C++ 入門

題目

從文本行中提取合法 Email 地址:@ 兩側必須為合法字符(字母數字 - _),且不允許連續兩個 .。輸出每行中所有合法地址。

算法

  1. 掃描行,找到 @ 且左右鄰字符合法。
  2. 向左擴展:遇非法字符或 .. 停止;若以 . 結尾則回退一位。
  3. 向右擴展:同理。
  4. 輸出 [left+1, right-1] 區間字符。

代碼

bool ok(char c) { return isalnum(c) || c=='-' || c=='_'; }
while (getline(cin, s)) {
    for (int i=1; i+1=0) {
            if (s[L]=='.' && s[L+1]=='.') break;
            if (s[L]!='.' && !ok(s[L])) break;
            --L;
        }
        if (s[L+1]=='.') ++L;
        while (R
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved