hihoCoder Problem 1082: 然而沼跃鱼早就看穿了一切


hihoCoder Problem 1082: 然而沼跃鱼早就看穿了一切 | 本站已迁移到www.code.bitjoy.net
fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼("marshtomp",不区分大小写)。为了使句子不缺少成分,统一换成 "fjxmlhx" 。

输入
输入包括多行。

每行是一个字符串,长度不超过200。

一行的末尾与下一行的开头没有关系。

输出
输出包含多行,为输入按照描述中变换的结果。

样例输入
The Marshtomp has seen it all before.
marshTomp is beaten by fjxmlhx!
AmarshtompB

样例输出
The fjxmlhx has seen it all before.
fjxmlhx is beaten by fjxmlhx!
AfjxmlhxB

简单的字符串查找替换题目。需要把字符串"marshtomp"替换成"fjxmlhx",而且marshtomp是不论大小写都要替换的,即使是嵌在一个长的单词内部也要替换,比如第三个样例。
  替换可以分如下几步:
  1. 首先判断一个单词的长度是否大于等于marshtomp的长度,如果小于,肯定不要替换;否则转2
  2. 将该单词转换成小写形式(使用cctype的tolower(int)库函数)
  3. 查找单词中是否有marshtomp部分存在(使用string.find)
  4. 如果存在,则把marshtomp替换成fjxmlhx,并且拼接剩余部分
  5. 将所有单词组成一个句子输出
本题中说明输入包含多行,但是没说具体多少行,所以可以用getline输入并判断输入是否为空
string a="marshtomp";
int a_len=a.length();
string b="fjxmlhx";
string to_lower(string s)
{
int len=s.size();
string tmp=s;
for(int i=0;i<len;i++)
tmp[i]=tolower(tmp[i]);//转小写库函数cctype
return tmp;
}
int main()
{
//freopen("input.txt","r",stdin);
string line;
while(getline(cin,line)&&line!="")//输入包含多行
{
line+=" ";//设置哨兵
string rs="";
int pos=line.find(' ');
while(pos!=-1)
{
string tmp=line.substr(0,pos);
if(tmp.size()>=a_len)
{
string lower_tmp=to_lower(tmp);
int a_pos=lower_tmp.find(a);
if(a_pos!=-1)
tmp=tmp.substr(0,a_pos)+b+tmp.substr(a_pos+a_len);//拼接
}
rs+=tmp+" ";
if(pos+1>=line.length())
break;
line=line.substr(pos+1);
pos=line.find(' ');
}
cout<<rs.substr(0,rs.size()-1)<<endl;
}
return 0;
}
http://www.cnblogs.com/boring09/p/4355969.html
字符串匹配+替换
注意替换串和原串长度是不等的,所以替换完还要进行收缩
 6 void kmp(char *line, int len) {
 7   char p[] = "marshtomp";
 8   char t[] = "fjxmlhx";
 9   int next[10] = {-1, 0, 0, 0, 0, 0, 0, 0, 1, 0};
10   int i = 0;
11   int j = 0;
12 
13   while (i < len && j < 9) {
14     if (j < 0 || tolower(line[i]) == p[j]) {
15       i++;
16       j++;
17     }
18     else
19       j = next[j];
20     if (j == 9) {
21       memcpy(line + i - 9, t, 7);
22       line[i - 9 + 7] = 0;
23       line[i - 9 + 8] = 0;
24       j = 0;
25     }
26   }
27 }
28 
29 void shrimp(char *line, int len) {
30   int i = 0;
31   int j = 0;
32 
33   while (j < len) {
34     if (line[j] == 0)
35       j++;
36     else
37       line[i++] = line[j++];
38   }
39   line[i] = 0;
40 }
41 
42 int main() {
43   char line[256];
44 
45   while (gets(line)) {
46     int len = strlen(line);
47     kmp(line, len);
48     shrimp(line, len);
49     cout << line << endl;
50   }
51 
52   return 0;
53 }
Read full article from hihoCoder Problem 1082: 然而沼跃鱼早就看穿了一切 | 本站已迁移到www.code.bitjoy.net

Labels

LeetCode (1432) GeeksforGeeks (1122) LeetCode - Review (1067) Review (882) Algorithm (668) to-do (609) Classic Algorithm (270) Google Interview (237) Classic Interview (222) Dynamic Programming (220) DP (186) Bit Algorithms (145) POJ (141) Math (137) Tree (132) LeetCode - Phone (129) EPI (122) Cracking Coding Interview (119) DFS (115) Difficult Algorithm (115) Lintcode (115) Different Solutions (110) Smart Algorithm (104) Binary Search (96) BFS (91) HackerRank (90) Binary Tree (86) Hard (79) Two Pointers (78) Stack (76) Company-Facebook (75) BST (72) Graph Algorithm (72) Time Complexity (69) Greedy Algorithm (68) Interval (63) Company - Google (62) Geometry Algorithm (61) Interview Corner (61) LeetCode - Extended (61) Union-Find (60) Trie (58) Advanced Data Structure (56) List (56) Priority Queue (53) Codility (52) ComProGuide (50) LeetCode Hard (50) Matrix (50) Bisection (48) Segment Tree (48) Sliding Window (48) USACO (46) Space Optimization (45) Company-Airbnb (41) Greedy (41) Mathematical Algorithm (41) Tree - Post-Order (41) ACM-ICPC (40) Algorithm Interview (40) Data Structure Design (40) Graph (40) Backtracking (39) Data Structure (39) Jobdu (39) Random (39) Codeforces (38) Knapsack (38) LeetCode - DP (38) Recursive Algorithm (38) String Algorithm (38) TopCoder (38) Sort (37) Introduction to Algorithms (36) Pre-Sort (36) Beauty of Programming (35) Must Known (34) Binary Search Tree (33) Follow Up (33) prismoskills (33) Palindrome (32) Permutation (31) Array (30) Google Code Jam (30) HDU (30) Array O(N) (29) Logic Thinking (29) Monotonic Stack (29) Puzzles (29) Code - Detail (27) Company-Zenefits (27) Microsoft 100 - July (27) Queue (27) Binary Indexed Trees (26) TreeMap (26) to-do-must (26) 1point3acres (25) GeeksQuiz (25) Merge Sort (25) Reverse Thinking (25) hihocoder (25) Company - LinkedIn (24) Hash (24) High Frequency (24) Summary (24) Divide and Conquer (23) Proof (23) Game Theory (22) Topological Sort (22) Lintcode - Review (21) Tree - Modification (21) Algorithm Game (20) CareerCup (20) Company - Twitter (20) DFS + Review (20) DP - Relation (20) Brain Teaser (19) DP - Tree (19) Left and Right Array (19) O(N) (19) Sweep Line (19) UVA (19) DP - Bit Masking (18) LeetCode - Thinking (18) KMP (17) LeetCode - TODO (17) Probabilities (17) Simulation (17) String Search (17) Codercareer (16) Company-Uber (16) Iterator (16) Number (16) O(1) Space (16) Shortest Path (16) itint5 (16) DFS+Cache (15) Dijkstra (15) Euclidean GCD (15) Heap (15) LeetCode - Hard (15) Majority (15) Number Theory (15) Rolling Hash (15) Tree Traversal (15) Brute Force (14) Bucket Sort (14) DP - Knapsack (14) DP - Probability (14) Difficult (14) Fast Power Algorithm (14) Pattern (14) Prefix Sum (14) TreeSet (14) Algorithm Videos (13) Amazon Interview (13) Basic Algorithm (13) Codechef (13) Combination (13) Computational Geometry (13) DP - Digit (13) LCA (13) LeetCode - DFS (13) Linked List (13) Long Increasing Sequence(LIS) (13) Math-Divisible (13) Reservoir Sampling (13) mitbbs (13) Algorithm - How To (12) Company - Microsoft (12) DP - Interval (12) DP - Multiple Relation (12) DP - Relation Optimization (12) LeetCode - Classic (12) Level Order Traversal (12) Prime (12) Pruning (12) Reconstruct Tree (12) Thinking (12) X Sum (12) AOJ (11) Bit Mask (11) Company-Snapchat (11) DP - Space Optimization (11) Dequeue (11) Graph DFS (11) MinMax (11) Miscs (11) Princeton (11) Quick Sort (11) Stack - Tree (11) 尺取法 (11) 挑战程序设计竞赛 (11) Coin Change (10) DFS+Backtracking (10) Facebook Hacker Cup (10) Fast Slow Pointers (10) HackerRank Easy (10) Interval Tree (10) Limited Range (10) Matrix - Traverse (10) Monotone Queue (10) SPOJ (10) Starting Point (10) States (10) Stock (10) Theory (10) Tutorialhorizon (10) Kadane - Extended (9) Mathblog (9) Max-Min Flow (9) Maze (9) Median (9) O(32N) (9) Quick Select (9) Stack Overflow (9) System Design (9) Tree - Conversion (9) Use XOR (9) Book Notes (8) Company-Amazon (8) DFS+BFS (8) DP - States (8) Expression (8) Longest Common Subsequence(LCS) (8) One Pass (8) Quadtrees (8) Traversal Once (8) Trie - Suffix (8) 穷竭搜索 (8) Algorithm Problem List (7) All Sub (7) Catalan Number (7) Cycle (7) DP - Cases (7) Facebook Interview (7) Fibonacci Numbers (7) Flood fill (7) Game Nim (7) Graph BFS (7) HackerRank Difficult (7) Hackerearth (7) Inversion (7) Kadane’s Algorithm (7) Manacher (7) Morris Traversal (7) Multiple Data Structures (7) Normalized Key (7) O(XN) (7) Radix Sort (7) Recursion (7) Sampling (7) Suffix Array (7) Tech-Queries (7) Tree - Serialization (7) Tree DP (7) Trie - Bit (7) 蓝桥杯 (7) Algorithm - Brain Teaser (6) BFS - Priority Queue (6) BFS - Unusual (6) Classic Data Structure Impl (6) DP - 2D (6) DP - Monotone Queue (6) DP - Unusual (6) DP-Space Optimization (6) Dutch Flag (6) How To (6) Interviewstreet (6) Knapsack - MultiplePack (6) Local MinMax (6) MST (6) Minimum Spanning Tree (6) Number - Reach (6) Parentheses (6) Pre-Sum (6) Probability (6) Programming Pearls (6) Rabin-Karp (6) Reverse (6) Scan from right (6) Schedule (6) Stream (6) Subset Sum (6) TSP (6) Xpost (6) n00tc0d3r (6) reddit (6) AI (5) Abbreviation (5) Anagram (5) Art Of Programming-July (5) Assumption (5) Bellman Ford (5) Big Data (5) Code - Solid (5) Code Kata (5) Codility-lessons (5) Coding (5) Company - WMware (5) Convex Hull (5) Crazyforcode (5) DFS - Multiple (5) DFS+DP (5) DP - Multi-Dimension (5) DP-Multiple Relation (5) Eulerian Cycle (5) Graph - Unusual (5) Graph Cycle (5) Hash Strategy (5) Immutability (5) Java (5) LogN (5) Manhattan Distance (5) Matrix Chain Multiplication (5) N Queens (5) Pre-Sort: Index (5) Quick Partition (5) Quora (5) Randomized Algorithms (5) Resources (5) Robot (5) SPFA(Shortest Path Faster Algorithm) (5) Shuffle (5) Sieve of Eratosthenes (5) Strongly Connected Components (5) Subarray Sum (5) Sudoku (5) Suffix Tree (5) Swap (5) Threaded (5) Tree - Creation (5) Warshall Floyd (5) Word Search (5) jiuzhang (5)

Popular Posts