Kaynağa Gözat

Example completed

Smarticles101 9 yıl önce
ebeveyn
işleme
40b0b777b4

+ 42
- 4
exercises/run-length-encoding/src/example/java/RunLengthEncoding.java Dosyayı Görüntüle

@@ -1,9 +1,47 @@
1
+import java.util.regex.Matcher;
2
+import java.util.regex.Pattern;
3
+
1 4
 public class RunLengthEncoding {
2
-    public String encode(String input) {
3
-        throw new UnsupportedOperationException("Method has not been implemented yet.");
5
+    public String encode(String data) {
6
+    	String encodedData = "";
7
+
8
+    	for(int i = 0; i < data.length(); i++) {
9
+    		char c = data.charAt(i);
10
+
11
+    		if(i != 0 && c == data.charAt(i - 1)) continue;
12
+
13
+    		int amt = 1;
14
+
15
+    		for(int j = i+1; j < data.length() && c == data.charAt(j); j++) {
16
+    			amt++;
17
+    		}
18
+
19
+    		if(amt == 1) encodedData += c;
20
+    		else encodedData += amt + Character.toString(c);
21
+    	}
22
+
23
+    	return encodedData;
4 24
     }
5 25
 
6
-    public String decode(String input) {
7
-        throw new UnsupportedOperationException("Method has not been implemented yet.");
26
+    public String decode(String encodedData) {
27
+    	String decodedData = "";
28
+        Pattern pattern = Pattern.compile("[0-9]+|[a-zA-Z]");
29
+        Matcher matcher = pattern.matcher(encodedData);
30
+
31
+        while (matcher.find()) {
32
+        	try {
33
+	            int number = Integer.parseInt(matcher.group());
34
+	        
35
+	            matcher.find();
36
+	        
37
+	            while (number-- != 0) {
38
+	                decodedData += matcher.group();
39
+	            }
40
+        	} catch(NumberFormatException e) {
41
+        		decodedData+=matcher.group();
42
+        	}
43
+        }
44
+
45
+        return decodedData;
8 46
     }
9 47
 }