本文共 1671 字,大约阅读时间需要 5 分钟。
要解决这个问题,我们需要将一个混合了数字和字母的小写字符串重新格式化,使得任意两个相邻字符的类型不同。也就是说,字母后面必须是数字,数字后面必须是字母。如果无法满足这个条件,就返回一个空字符串。
public String reformat(String s) { char[] chars = s.toCharArray(); List digitList = new ArrayList<>(); List charList = new ArrayList<>(); for (char c : chars) { if (Character.isDigit(c)) { digitList.add(c); } else { charList.add(c); } } int digitSize = digitList.size(); int charSize = charList.size(); if (Math.abs(digitSize - charSize) >= 2) { return ""; } StringBuilder result = new StringBuilder(); if (digitSize == charSize) { for (int i = 0; i < digitSize; i++) { result.append(digitList.get(i)); result.append(charList.get(i)); } } else if (digitSize > charSize) { for (int i = 0; i < charSize; i++) { result.append(digitList.get(i)); result.append(charList.get(i)); } result.append(digitList.get(charSize)); } else { for (int i = 0; i < digitSize; i++) { result.append(charList.get(i)); result.append(digitList.get(i)); } result.append(charList.get(digitSize)); } return result.toString();} 通过这种方法,我们可以确保重新格式化后的字符串满足相邻字符类型不同的条件,或者返回空字符串表示无法满足条件。
转载地址:http://mykx.baihongyu.com/