【hihocoder1082】然而沼跃鱼早就看穿了一切——字符串
来源:互联网 发布:att 4g网络频段 编辑:程序博客网 时间:2024/05/13 19:35
题目:点击进入
描述:
给出若干行字符串,将每个串中的模式串(不分大小写)替换成目标串并输出。
题解:
题目很简单,关键在于如何优雅的实现,这里给出一些小的tips。
花式读入,一行,识别或不是别空格
string.find()方法,第一个参数是模式串,第二个参数是匹配的起始位置,返回的是第一个满足的位置,如果匹配不到,返回string::npos
代码:
#pragma comment(linker, "/STACK:1024000000,1024000000")#include <ctime>#include <cstdio>#include <cstring>#include <cmath>#include <climits>#include <cassert>#include <cctype>#include <complex>#include <algorithm>#include <string>#include <iostream>#include <bitset>#include <map>#include <queue>#include <stack>#include <vector>#include <list>#include <set>using namespace std;#define fi first#define se second#define MP(A, B) make_pair(A, B)#define pb push_back#define gcd __gcd#define foreach(it,a) for(__typeof((a).begin()) it=(a).begin();it!=(a).end();it++)typedef long long ll;typedef unsigned long long ulls;typedef unsigned int uint;typedef pair<int, int> pii;typedef vector<int> vi;typedef vector<pii> vii;typedef map<int, int> mii;typedef map<string, int> msi;typedef map<pii, int> mpi;#if ( ( _WIN32 || __WIN32__ ) && __cplusplus < 201103L) #define lld %I64d#else #define lld %lld#endifconst int INF = 0x3f3f3f3f;const ll LINF = 0x3f3f3f3f3f3f3f3fLL;const int MOD = 1e9 + 7;const double pi = acos(-1.0);const double eps = 1e-6;const int maxn = 1e2 + 5;const int maxm = 1e6 + 5;const int dx[] = {-1, 0, 1, 0, -1, -1, 1, 1};const int dy[] = {0, 1, 0, -1, 1, -1, 1, -1};inline int scan(int &a) { return scanf("%d", &a); }inline int scan(int &a, int &b) { return scanf("%d%d", &a, &b); }inline int scan(int &a, int &b, int &c) { return scanf("%d%d%d", &a, &b, &c); }inline int scan(ll &a) { return scanf("lld", &a); }inline int scan(ll &a, ll &b) { return scanf("lldlld", &a, &b); }inline int scan(ll &a, ll &b, ll &c) { return scanf("lldlldlld", &a, &b, &c); }inline int scan(double &a) { return scanf("%lf", &a); }inline int scan(double &a, double &b) { return scanf("%lf%lf", &a, &b); }inline int scan(double &a, double &b, double &c) { return scanf("%lf%lf%lf", &a, &b, &c); }inline int scan(char &a) { return scanf("%c", &a); }inline int scan(char *a) { return scanf("%s", a); }template<class T> inline void mem(T &A, int x) { memset(A, x, sizeof(A)); }template<class T0, class T1> inline void mem(T0 &A0, T1 &A1, int x) { mem(A0, x), mem(A1, x); }template<class T0, class T1, class T2> inline void mem(T0 &A0, T1 &A1, T2 &A2, int x) { mem(A0, x), mem(A1, x), mem(A2, x); }template<class T0, class T1, class T2, class T3> inline void mem(T0 &A0, T1 &A1, T2 &A2, T3 &A3, int x) { mem(A0, x), mem(A1, x), mem(A2, x), mem(A3, x); }template<class T0, class T1, class T2, class T3, class T4> inline void mem(T0 &A0, T1 &A1, T2 &A2, T3 &A3, T4 &A4, int x) { mem(A0, x), mem(A1, x), mem(A2, x), mem(A3, x), mem(A4, x); }template<class T0, class T1, class T2, class T3, class T4, class T5> inline void mem(T0 &A0, T1 &A1, T2 &A2, T3 &A3, T4 &A4, T5 &A5, int x) { mem(A0, x), mem(A1, x), mem(A2, x), mem(A3, x), mem(A4, x), mem(A5, x); }template<class T0, class T1, class T2, class T3, class T4, class T5, class T6> inline void mem(T0 &A0, T1 &A1, T2 &A2, T3 &A3, T4 &A4, T5 &A5, T6 &A6, int x) { mem(A0, x), mem(A1, x), mem(A2, x), mem(A3, x), mem(A4, x), mem(A5, x), mem(A6, x); }template<class T> inline T min(T a, T b, T c) { return min(min(a, b), c); }template<class T> inline T max(T a, T b, T c) { return max(max(a, b), c); }template<class T> inline T min(T a, T b, T c, T d) { return min(min(a, b), min(c, d)); }template<class T> inline T max(T a, T b, T c, T d) { return max(max(a, b), max(c, d)); }template<class T> inline T min(T a, T b, T c, T d, T e) { return min(min(min(a,b),min(c,d)),e); }template<class T> inline T max(T a, T b, T c, T d, T e) { return max(max(max(a,b),max(c,d)),e); }const string tar = "fjxmlhx";const string txt = "marshtomp";int main(){ #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); long _begin_time = clock(); #endif string p = ""; while(getline(cin, p)) { string ans = ""; int len = p.size(); string tmp = p; for(int i = 0; i < len; i++) tmp[i] = tolower(p[i]); int pos = -1, pre = 0; while((pos = tmp.find(txt, pos + 1)) != string::npos && pos < len && pre < len) { for(int i = pre; i < pos; i++) ans += p[i]; ans += tar; pre = pos + txt.size(); } for(int i = pre; i < len; i++) ans += p[i]; cout << ans << endl; } #ifndef ONLINE_JUDGE long _end_time = clock(); printf("time = %ld ms\n", _end_time - _begin_time); #endif return 0;}
0 0
- 【hihocoder1082】然而沼跃鱼早就看穿了一切——字符串
- hihocoder1082 然而沼跃鱼早就看穿了一切
- 然而沼跃鱼早就看穿了一切 hihoCoder1082
- 字符串替换 hihoCoder1082 然而沼跃鱼早就看穿了一切
- #1082 : 然而沼跃鱼早就看穿了一切
- #1082 : 然而沼跃鱼早就看穿了一切
- #1082 : 然而沼跃鱼早就看穿了一切
- #1082 : 然而沼跃鱼早就看穿了一切
- 然而沼跃鱼早就看穿了一切
- hiho1082 : 然而沼跃鱼早就看穿了一切
- #1082 : 然而沼跃鱼早就看穿了一切
- #1082 : 然而沼跃鱼早就看穿了一切
- 然而沼跃鱼早就看穿了一切
- 然而沼跃鱼早就看穿了一切
- 然而沼跃鱼早已看穿了一切——字符串替换
- HihoCoder#1082 : 然而沼跃鱼早就看穿了一切
- hihoCoder:#1082 然而沼跃鱼早就看穿了一切
- 然而沼跃鱼早就看穿了一切(暴力+懒惰标记)
- BZOJ2091——[Poi2010]The Minima Game
- 计算机中如何表示数字-07IEEE754浮点数标准
- 【探索】Get与Post
- 多线程+缓冲池demo
- Cpp_Primer--运算符
- 【hihocoder1082】然而沼跃鱼早就看穿了一切——字符串
- 数据链路层协议
- oracle row_number函数操作(含实例)
- 【IOS学习】网络请求中的cookie
- PAT乙级.1024. 科学计数法 (20)
- 简单封装Google的二维码生成/解析工具——zxing
- phabricator/github版本提交前公钥秘钥的设置与版本合并问题
- 论Makefile的重要性(一)-----Linux C开发
- 网络层协议