码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 282 - Rename(字符串处理)

时间:2014-08-20 16:20:52      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   文件   数据   

UVA 282 - Rename

题目链接

题意:给定一些文件名,然后有利用通配符‘*‘去进行修改操作,输出每次修改操作会修改到的文件的替换

思路:先保存下文件名,然后每次改名去遍历找一遍看有多少个文件是符合这个格式的,如果符合就相应输出即可

注意这组数据
ab
abab
end
rename ab*ab asd*asd
end

代码:

#include <cstdio>
#include <cstring>
#include <vector>
#include <string>
#include <iostream>
using namespace std;

vector<string> g;
string s, a, b;

void solve() {
    cout << s << " " << a << " " << b << endl;
    for (int i = 0; i < g.size(); i++) {
	string mid = "";
	int l = 0, r = a.length() - 1;
	int ll, rr;
	for (ll = 0; ll < g[i].length(); ll++) {
	    if (g[i][ll] == a[l]) l++;
	    else break;
	}
	for (rr = g[i].length() - 1; rr >= 0; rr--) {
	    if (g[i][rr] == a[r]) r--;
	    else break;
	}
	if (a[l] != '*' || a[r] != '*' || ll - rr > 1) continue;
	cout << "mv " << g[i] << " ";
	int j;
	for (j = 0; j < b.length(); j++) {
	    if (b[j] == '*') break;
	    cout << b[j];
	}
	for (; ll <= rr; ll++)
	    cout << g[i][ll];
	j++;
	for (; j < b.length(); j++)
	    cout << b[j];
	cout << endl;
    }
}

int main() {
    while (cin >> s) {
	g.clear();
	if (s != "end") {
	    g.push_back(s);
	    while (cin >> s) {
		if (s == "end") break;
		g.push_back(s);
	    }
	}
	while (cin >> s) {
	    if (s == "end") break;
	    cin >> a >> b;
	    solve();
	}
	printf("\n");
    }
    return 0;
}


UVA 282 - Rename(字符串处理),布布扣,bubuko.com

UVA 282 - Rename(字符串处理)

标签:style   blog   http   color   os   io   文件   数据   

原文地址:http://blog.csdn.net/accelerator_/article/details/38707687

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!