实现单词替换(非word中的字符串替换,有点难度)

来源:互联网 发布:java 单线程 编辑:程序博客网 时间:2024/05/16 05:00


               说实话,这个题目挺难的,要综合考虑多种情况,word中的替换功能仅仅是实现字符串的替换,而这里是单词的置换. 提交后,一次成功,相当开心啊!, 程序如下:

#include<iostream>#define FLAG1 1#define FLAG2 2#define FLAG3 3#define FLAG4 4using namespace std;bool isSeperator(char c){if(' ' == c || ',' == c || '.' == c)return true;if('?' == c || '!' == c || ';' == c)return true;return false;}bool isyou(char x, char y, char z){if('y' == x && 'o' == y && 'u' == z)return true;return false;}bool isYou(char x, char y, char z){if('Y' == x && 'o' == y && 'u' == z)return true;return false;}bool iswe(char x, char y){if('w' == x && 'e' == y)return true;return false;}bool isWe(char x, char y){if('W' == x && 'e' == y)return true;return false;}int main(){char s[1025];char finalStr[1200];int i, j, len;while(cin.getline(s, 1025)){// necessary.memset(finalStr, 0, 1200 * sizeof(char));len = strlen(s);for(i = 0; '\0' != s[i]; i = j + 1){for(j = i; '\0' != s[j] && !isSeperator(s[j]); j++){NULL;}if(3 == j - i && isyou(s[i], s[i + 1], s[i + 2])){s[i] = FLAG1;}if(3 == j - i && isYou(s[i], s[i + 1], s[i + 2])){s[i] = FLAG2;}if(2 == j - i && iswe(s[i], s[i + 1])){s[i] = FLAG3;}if(2 == j - i && isWe(s[i], s[i + 1])){s[i] = FLAG4;}}i = 0;j = 0;while(i < len) // do not use while('\0' != s[i]) {if(FLAG1 == s[i]){finalStr[j++] = 'w';finalStr[j++] = 'e';i += 3;}else if(FLAG2 == s[i]){finalStr[j++] = 'W';finalStr[j++] = 'e';i += 3;}else if(FLAG3 == s[i]){finalStr[j++] = 'y';finalStr[j++] = 'o';finalStr[j++] = 'u';i += 2;}else if(FLAG4 == s[i]){finalStr[j++] = 'Y';finalStr[j++] = 'o';finalStr[j++] = 'u';i += 2;}else{finalStr[j++] = s[i++];}}cout << finalStr << endl;}return 0;}


原创粉丝点击