![007_문자열 문자 개수 세기](https://inblog.ai/_next/image?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D007_%25EB%25AC%25B8%25EC%259E%2590%25EC%2597%25B4%2520%25EB%25AC%25B8%25EC%259E%2590%2520%25EA%25B0%259C%25EC%2588%2598%2520%25EC%2584%25B8%25EA%25B8%25B0%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Dchodong&w=1920&q=75)
Contents
문제 조건
- “AABBBCCCCDDDDD”가 주어졌을때 “A2B3C4D5”로 변환 되어 출력하는 인코딩을 만들어라!
- 인코딩으로 변환된 값을 디코딩으로 원래 모습으로 출력되도록 만들어라!
String 심화를 참고하여 문제를 완성 시켜보자!
package ex08.example; public class StringEx01 { public static String encoding(String data) { String result = ""; char sameStr = ' '; int count = 0; for (int i = 0; i < data.length(); i++) { for (int j = 0; j < data.length(); j++) { if (sameStr == data.charAt(i)) { break; } if (data.charAt(i) == data.charAt(j)) { count++; } } sameStr = data.charAt(i); if (sameStr == data.charAt(i)) { if (count != 0) { result = result + sameStr + Integer.toString(count); } count = 0; } } return result; } public static String decoding(String data) { String result = ""; int number; String[] separation = data.split(""); for (int i = 0; i < separation.length; i++) { if (i % 2 != 0) { number = Integer.parseInt(separation[i]); for (int j = 0; j < number; j++) { result = result + separation[i - 1]; } } } return result; } public static void main(String[] args) { String data = "AABBBCCCCDDDDD"; // Byte -> 14Byte System.out.println(encoding(data)); System.out.println(decoding(encoding(data))); // 인코딩 A2B3C4D5 // 디코딩 AABBBCCCCDDDDD } }
출력 결과
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fb1939378-3cd6-4f1f-9032-6c4df0711232%252F087e758f-f2e2-43c7-bdfc-92d230f46604%252FUntitled.png%3Ftable%3Dblock%26id%3D9761d121-cc3c-448c-a46f-a6465a88146b%26cache%3Dv2&w=3840&q=75)
Share article