题目描述
新类型字符的定义如下:
1.新类型字符是长度为1或者2的字符串。
2. 表现形式可以仅是小写字母,例如,“e”; 也可以是大写字母+小写字母,例如,“Ab”;还可以是大写字母+大写字母,例如,“DC”。
现在给定一个字符串str, str 一定是若干新类型字符 正确组合的结果。比如"eaCCBi",由新类型字符"e"、"a”、"CC"和"Bi"拼成。 再给定一个整数k,代表str中的位置。请返回第k个位置的新类型字符。
输入描述:
输入包含两行,第一行两个整数n,k。n代表字符串str的长度,第二行包含一个字符串,代表字符串str。
输出描述:
输出包含一个被k位置指定的新型字符。
示例1
输入
11 7
aaABCDEcBCg
输出
Ec
解法一:正常遍历
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] info = br.readLine().trim().split(" ");
int len = Integer.parseInt(info[0]);
int index = Integer.parseInt(info[1]);
String s = br.readLine();
String res = getNewStr(s,index);
System.out.println(res);
}
public static String getNewStr(String s,int index){
char[] arr = s.toCharArray();
int i = 0;
while(i<=index){
if(isBig(arr[i])){
if(i==index||i+1==index){
return ""+arr[i]+arr[i+1];
}
i += 2;
}else{
i++;
}
}
return ""+arr[index];
}
public static boolean isSmall(char c){
return c>='a'&&c<='z';
}
public static boolean isBig(char c){
return c>='A'&&c<='Z';
}
}