codewars033: Duplicate Encoder 重複編碼器

Sourcejava

package codewars.dec;
//https://www.codewars.com/kata/54b42f9314d9229fd6000d9c/train/java
import java.util.*;

public class DuplicateEncoder {
	static String encode(String word) {
		char[] arr = word.toCharArray();
		boolean[] replaceArr = new boolean[arr.length];
		for (int i = 0; i < arr.length; i++) {
			if (replaceArr[i]) {
				continue;
			}
			Character ch = arr[i];
			Character oppo = null;
			if (Character.isLetter(ch)) {
				oppo = Character.isLowerCase(ch) ? Character.toUpperCase(ch)
						: Character.toLowerCase(ch);
			}
			Set<Integer> set = new HashSet<Integer>();
			set.add(word.indexOf(ch));
			set.add(word.lastIndexOf(ch));
			if (word.contains(String.valueOf(oppo))) {
				set.add(word.indexOf(oppo));
				set.add(word.lastIndexOf(oppo));
			}
			if (set.size() > 1) {
				for (int j = 0; j < arr.length; j++) {
					if (!replaceArr[j]) {
						if (arr[j] == ch || oppo != null && arr[j] == oppo) {
							arr[j] = ')';
							replaceArr[j] = true;
						}
					}
				}
			} else if (set.size() == 1) {
				for (int j = 0; j < arr.length; j++) {
					if (!replaceArr[j]) {
						if (arr[j] == ch) {
							arr[j] = '(';
							replaceArr[j] = true;
						}
					}
				}
			}
		}

		return new String(arr);
	}
}
相關文章
相關標籤/搜索