新类型字符的定义如下: 1. 新类型字符是长度为1或者2的字符串。 2. 表现形式可以仅是小写字母,例如,"e"; 也可以是大写字母+小写字母,例如,"Ab";还可以是大写字母+大写字母,例如,"DC"。 现在给定一个字符串str, str 一定是若干新类型字符 正确组合的结果。比如"eaCCBi",由新类型字符"e"、"a”、"CC"和"Bi"拼成。 再给定一个整数k,代表str中的位置。请返回第k个位置的新类型字符。
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { public static Scanner sc = new Scanner(System.in); public static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); public static long mod = (long)Math.pow(2,29); public static void main(String[] args) throws Exception { String nk = reader.readLine(); String[] nkArr = nk.split(" "); int n = Integer.valueOf(nkArr[0]); int k = Integer.valueOf(nkArr[1]); String str = reader.readLine(); System.out.println(getKth(str, k)); } static String getKth(String str, int k){ char[] chars = str.toCharArray(); int uNum = 0; for(int i=k-1;i>=0;i--){ if(!isUpper(chars[i])){ break; } uNum++; } // 奇数 if((uNum & 1) == 1){ return str.substring(k-1, k+1); } // 偶数 且k位置是大写字母 if(isUpper(chars[k])){ return str.substring(k, k+2); } // 偶数 且k位置是小写字母 return String.valueOf(chars[k]); } static boolean isUpper(char c){ if(c <= 'Z' && c >= 'A'){ return true; } return false; } } /* 11 7 aaABCDEcBCg Ec */