链接:https://www.nowcoder.com/questionTerminal/d3d8e23870584782b3dd48f26cb39c8f
来源:牛客网
按照指定规则对输入的字符串进行处理。
详细描述:
将输入的两个字符串合并。
对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。
对排序后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后为0010b,也就是2。转换后的字符为‘2’; 如字符为‘7’,为0111b,则翻转后为1110b,也就是e。转换后的字符为大写‘E’。
举例:输入str1为"dec",str2为"fab",合并为“decfab”,分别对“dca”和“efb”进行排序,排序后为“abcedf”,转换后为“5D37BF”
接口设计及说明:
/*
功能:字符串处理
输入:两个字符串,需要异常处理
输出:合并处理后的字符串,具体要求参考文档
返回:无
*/
void ProcessString(char* str1,char *str2,char * strOutput)
{
}
输入描述:
输入两个字符串
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void deal(char[] a) {
for(int i=0;i<a.length-1;i++) {
for(int j=i+1;j<a.length;j++) {
if(a[i]>a[j]) {
char temp=(char)a[i];
a[i]=a[j];
a[j]=(char)temp;
}
}
}
}
public static String deal1(String s) {
char[] a=s.toCharArray();
StringBuffer sb=new StringBuffer();
for(int i=0;i<a.length;i++) {
if('0'<=a[i]&&a[i]<='9'||'a'<=a[i]&&a[i]<='f'||'A'<=a[i]&&a[i]<='F') {
sb.append(deal2(a[i]));
}
else {
sb.append(a[i]);
}
}
return sb.toString();
}
public static char deal2(char s) {
char a = 0;
switch(s) {
case '0':
a='0';
break;
case '1':
a='8';
break;
case '2':
a='4';
break;
case '3':
a='C';
break;
case '4':
a='2';
break;
case '5':
a='A';
break;
case '6':
a='6';
break;
case '7':
a='E';
break;
case '8':
a='1';
break;
case '9':
a='9';
break;
case 'A':
a='5';
break;
case 'B':
a='D';
break;
case 'C':
a='3';
break;
case 'd':
a='B';
break;
case 'E':
a='7';
break;
case 'f':
a='F';
break;
case 'a':
a='5';
break;
case 'b':
a='D';
break;
case 'c':
a='3';
break;
case 'D':
a='B';
break;
case 'e':
a='7';
break;
case 'F':
a='F';
break;
default:
break;
}
return a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
String s1=sc.next();
String s2=sc.next();
String s3=s1+s2;
StringBuffer sb1=new StringBuffer();
StringBuffer sb2=new StringBuffer();
for(int i=0;i<s3.length();i++) {
if(i%2==0) {
sb1.append(s3.charAt(i));
}
else {
sb2.append(s3.charAt(i));
}
}
char[] ssb1=sb1.toString().toCharArray();
char[] ssb2=sb2.toString().toCharArray();
deal(ssb1);
deal(ssb2);
String s4=String.valueOf(ssb1);
String s5=String.valueOf(ssb2);
StringBuffer sb3=new StringBuffer();
for(int i=0;i<s3.length();i++) {
if(i%2==0) {
sb3.append(s4.charAt(i/2));
}
else {
sb3.append(s5.charAt(i/2));
}
}
System.out.println(deal1(sb3.toString()));
}
}
}