字符串分割
题目描述
给定一个非空字符串S,其被N'-'分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并'-'分隔。
对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;大小写字母的数量相等时,不做转换。
输入描述
输入为两行,第一行为参数K,第二行为字符串S,
输出描述
输出转换后的字符串。
用例
解题思路
字符串分割:
给定字符串 S 使用 - 进行分割,分割后得到多个子串。 分割后的子串处理:
保持第一个子串不变。
对于后续每个子串,按照给定的 K 将它分成多个子串,每个新的子串最多包含 K 个字符。
字母大小写转换:
对每个新组成的子串,计算小写字母和大写字母的数量:
如果小写字母多,则将所有大写字母转换为小写字母。
如果大写字母多,则将所有小写字母转换为大写字母。
如果大小写字母数量相等,则不进行任何转换。
拼接处理后的子串:
最终将所有处理后的子串按 - 拼接起来,得到最终的结果。
代码实现
import java.util.*;
public class StringTransformation {
// 方法:处理每个子串并转换大小写
public static String transformSubstring(String s) {
int lowercaseCount = 0;
int uppercaseCount = 0;
// 计算小写字母和大写字母的数量
for (char c : s.toCharArray()) {
if (Character.isLowerCase(c)) {
lowercaseCount++;
} else if (Character.isUpperCase(c)) {
uppercaseCount++;
}
}
// 根据字母数量决定转换
if (lowercaseCount > uppercaseCount) {
// 小写字母多,将大写字母转换为小写
return s.toLowerCase();
} else if (uppercaseCount > lowercaseCount) {
// 大写字母多,将小写字母转换为大写
return s.toUpperCase();
} else {
// 大小写字母相等,不做转换
return s;
}
}
// 方法:分割并处理字符串
public static String processString(int K, String S) {
// 按照'-'分割字符串
String[] parts = S.split("-");
// 第一个子串保持不变
StringBuilder result = new StringBuilder(parts[0]);
// 处理剩下的子串
for (int i = 1; i < parts.length; i++) {
String subString = parts[i];
List<String> chunks = new ArrayList<>();
// 将每个子串按K个字符进行分割
for (int j = 0; j < subString.length(); j += K) {
int end = Math.min(j + K, subString.length());
chunks.add(subString.substring(j, end));
}
// 对每个子串进行转换并拼接
for (String chunk : chunks) {
result.append("-");
result.append(transformSubstring(chunk));
}
}
return result.toString();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取K值
int K = Integer.parseInt(scanner.nextLine().trim());
// 读取字符串S
String S = scanner.nextLine().trim();
// 处理字符串并输出结果
String result = processString(K, S);
System.out.println(result);
scanner.close();
}
}
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 三只蚂蚁
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果